C 實現求解逆矩陣

2021-07-01 21:18:26 字數 954 閱讀 6992

利用c語言求解線性代數中求解逆矩陣的一類問題。

最近在學線代,其中有乙個挺煩人的就是求解逆矩陣,雖然求逆矩陣不難,但我自己在解題的時候經常求錯,所以就想能不能用演算法來求解這一類的題目。

求解逆矩陣一般可以用初等行變換或伴隨矩陣方法求解。

這裡採用的是伴隨矩陣方法。

思路很簡單,先求矩陣a對應的行列式|a|,然後在求伴隨矩陣即可,伴隨矩陣可以用乙個二維陣列存放即可,注意一下伴隨矩陣的元素排列方式,還有稍微注意一下在行列式中的元素下標和二維陣列中的下標的不同。

接下來就是如何求解|a|的問題了,我沒想太多,直接暴力求解吧,反正我需要求的階數不會很多,所以即使演算法不優,執行時間也不會很長。這裡用的是余子式的方法,從第一行的第乙個元素開始,得到對應的余子式,為了能夠計算余子式的值,還需要繼續對余子式求余子式,這裡利用遞迴是乙個很好的方法,會讓思路很清晰。

至於伴隨矩陣,實際上也是求解余子式的過程,這個過程和上述幾乎是一樣的。

下面是程式**:carray.cpp

#include#includeusing namespace std;

#define n 10 //行列式的最大階數

int getvalue(int a[n][n],int n)

return res; //返回行列式計算結果

} void getastar(int a[n][n],int n,int yu[n][n])

}

int main()

{ int arr[n][n],res[n][n];

int i,j;

int n;

cout<<"/*********************本程式可以求解10階以內矩陣的逆矩陣**********************/"<>n && n){

cout<<"請輸入矩陣:"<>arr[i][j];

cout<<"所求得的逆矩陣為:"<

opencv 求解Mat矩陣的逆矩陣

opencv中cv invert 可直接用來求解矩陣的逆矩陣 函式原型如下 double cv invert inputarray src,outputarray dst,int flags decomp lu parameters src 待求解的矩陣 dst 輸出的逆矩陣 flags 求解方法 ...

mkl中dsytri求解矩陣的逆

mkl是intel提供的專門用來處理大型矩陣運算的乙個庫,比我們自己寫的函式基本都要快很多。dsytri是用來求解對稱實矩陣的逆矩陣的函式。在求解之前先使用dsytrf對矩陣進行分解,dsytrf通過lu分解將矩陣分解成上三角或下三角矩陣 下面是使用c 語言寫的乙個求解對稱矩陣逆舉證的函式。matr...

mkl中dsytri求解矩陣的逆

mkl是intel提供的專門用來處理大型矩陣運算的乙個庫,比我們自己寫的函式基本都要快很多。dsytri是用來求解對稱實矩陣的逆矩陣的函式。在求解之前先使用dsytrf對矩陣進行分解,dsytrf通過lu分解將矩陣分解成上三角或下三角矩陣 下面是使用c 語言寫的乙個求解對稱矩陣逆舉證的函式。matr...