高斯消元法求矩陣的逆

2021-08-25 08:37:36 字數 909 閱讀 8409

逆矩陣:設a是數域上的乙個n階方陣,若在相同數域上存在另乙個n階矩陣b,使得: ab=ba=e。 則我們稱b是a的逆矩陣,而a則被稱為可逆矩陣。

矩陣求逆一般有兩種方法,乙個是伴隨矩陣法,乙個是初等變換法,也就是高斯消元法。這裡主要講高斯消元法的程式設計方法。

由條件ab=ba以及矩陣乘法的定義可知,矩陣a和b都是方陣。再由條件ab=i以及定理「兩個矩陣的乘積的行列式等於這兩個矩陣的行列式的乘積」可知,這兩個矩陣的行列式都不為0。也就是說,這兩個矩陣的秩等於它們的級數(或稱為階,也就是說,a與b都是n\times n方陣,且rank(a) = rank(b) = n)。換句話說,這兩個矩陣可以只經由初等行變換,或者只經由初等列變換,變為單位矩陣。

因為對矩陣a施以初等行變換(初等列變換)就相當於在a的左邊(右邊)乘以相應的初等矩陣,所以我們可以同時對a和i施以相同的初等行變換(初等列變換)。這樣,當矩陣a被變為i時,i就被變為a的逆陣b。

bool gauss(float a[n], float b[n], int n)

}//初始化b矩陣為單位陣

for (i = 0; i < n; i++)

}for (i = 0; i < n; i++)

}//如果主元所在行不是第i行,進行行交換

if (k != i)

}//判斷主元是否為0, 若是, 則矩陣a不是滿秩矩陣,不存在逆矩陣

if (t[i][i] == 0)

//消去a的第i列除去i行以外的各行元素

temp = t[i][i];

for (j = 0; j < n; j++)

for (j = 0; j < n; j++) //第0行->第n行}}

}return

true;

}

完整的測試**如下:矩陣求逆

高斯消元法求逆矩陣

僅供自己學習記錄。沒有處理主對角線有0得情況與沒有逆矩陣的情況,但也基本夠用了。const int row 4 int res row row void gauss float mat row row else 2.化為行階梯形式 特殊處理第一行 for int i 1 i row i 對角線元素歸...

矩陣求逆 高斯消元拓展

高斯消元 對於兩個矩陣a,b a,ba,b,如果a b e a times b e a b e 其中e ee 為單位矩陣,那麼我們稱b bb是a aa的逆矩陣,a aa為可逆矩陣。前置 單位矩陣 eee 單位矩陣的定義 乙個從左上角到右下角的對角線 主對角線 的元素全部為1 11,其餘元素全部為0 ...

Gauss Jordan消元法求矩陣的逆

最近資訊保安作業要寫hill密碼,涉及到求矩陣的逆。不想用乙個函式就用那些亂七八糟的庫,大概找了找又沒現成的,只能自己擼了。寫的時候才發現線代都忘光了qaq 1 gauss jordan elimination method to get inverse matrix 2 template doub...