高斯消元學習筆記

2021-08-11 18:38:37 字數 2780 閱讀 8359

先來安利乙個部落格 高斯消元 & 線性基【學習筆記】

本文就講了最基礎的高斯消元,高斯消元的擴充套件應用可以看上面的那個呀w

高斯消元是用來解線性方程組的。所謂線性方程組,就是一次方程組。

對於解這個一般的線性方程組,求xi

a11 * x1 + a12 * x2 + ... + a1n * xn = b1

a21 * x1 + a22 * x2 + ... + a2n * xn = b2

...an1 * x1 + an2 * x2 + ... + ann * xn = bn

同時,我們順便定義一下矩陣乘法。設am * p的矩陣,bp * n的矩陣,那麼稱m * n的矩陣c為矩陣ab的乘積,那麼有 (a

×b)i

j=∑p

k=1a

ikbk

j 。

從這裡得到啟發,可以定義係數矩陣、未知數矩陣以及等式右邊的常數矩陣

a 、x和

b 。那麼根據矩陣乘法,我們可以將這一共 n 個等式極為簡單地描述為乙個等式,即 ax

我們將上述矩陣變為增廣矩陣:

我們需要乙個nn + 1列的陣列來存

多出來那一列就是常數矩陣 b

for (int j = i + 1; j

<= n; j ++)

這是用第i個方程去消第i + 1 ~ n個方程,通過調整第i個未知數的係數,來消掉後面那些方程中的這個第i個未知數

所以double t = m[j][i] / m[i][i];除的是m[i][i]

j是要被消的方程,k是被消的方程的第幾項

舉個例子比如n = 3時:

a11 * x1 + a12 * x2 + a13 * x3 = b1

a22 * x2 + a23 * x3 = b2

a33 * x3 = b3

消完以後,矩陣變成這樣的上三角矩陣

(用最右邊應該還有一列常數項,注意常數項也要消元

然後直接回代即可。從下往上迴圈,每一次可以確定乙個變數,然後將其上面的所有行給代進去,將相應的係數變成 0,方程式右邊的常數項也相應地減去相應的量。

接著上面的那個例子:

a11 * x1 + a12 * x2 + a13 * x3 = b1

a22 * x2 + a23 * x3 = b2

a33 * x3 = b3

這時候可以解出x3,然後帶到前面的每個方程裡,就變成:

a11 * x1 + a12 * x1 = b1 - x3 * a13

a22 * x2 = b2 - x3 * a23

然後解出x2,繼續做下去

最終就全解出來了

for (int i = n; i >= 1; i --) 

}

這就是帶回去的過程

最終m[i][n]就是第i個未知數的解,因為第i個方程是xi = k的形式

int k = i;

for (int j = i + 1; i

<= n; i ++)

if (fabs(m[j]

[i]) > fabs(m[k]

[i])) k = j;

if (k != i) for (int j = i; j

<= n + 1; j ++) swap(m[i]

[j], m[k]

[j]);

這段是找當前項(當前列)係數絕對值最大的乙個方程,並與當前行交換,可以保證精度,在消元的時候把浮點數的誤差降到最小。

這就是高斯消元法。其的時間複雜度其實是相當好估計的。每一次先選擇兩行,再將這兩行開始消元,於是每一次消元需要列舉每乙個矩陣中的變數,所以就是 o(

n2m)

,是立方級的。

inline

void gauss(int n)

}for (int i = n; i >= 1; i --) }}

高斯消元學習筆記

數學上,高斯消元法 英語 gaussian elimination 是線性代數中的乙個演算法,可用來為線性方程組求解,求出矩陣的秩,以及求出可逆方陣的逆矩陣。當用於乙個矩陣時,高斯消元法會產生出乙個行梯陣式。以上引自維基百科。我們可以把乙個 n 元 1 次方程表示成乙個 n 行 n 1 列的矩陣 矩...

高斯消元學習筆記

高斯消元是一種用來求解線性方程組 多元一次方程組 的演算法。假設我們現在需要求解乙個n元一次方程 begin a x 1 a x 2 a x n b 1 a x 1 a x 2 a x n b 2 vdots a x 1 a x 2 a x n b n end 把係數存下來。begina a cdo...

數論 高斯消元學習筆記

q 高斯消元是什麼?聽起來好高階啊?a 二元一次方程組解過嗎?那就是高斯消元。首先對高斯消元做一些準備 q 什麼是線性方程組?a 雞兔同籠方程組 由 m 個 n 元一次方程所構成的方程組。為了簡化表達,做出如下定義 example 假如現有一方程組 beginx 1 x 2 4x 3 17 5x 1...