高斯消元學習筆記

2022-09-21 00:15:10 字數 1502 閱讀 6888

高斯消元是一種用來求解線性方程組(多元一次方程組)的演算法。

假設我們現在需要求解乙個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_&\cdots&a_&b_1\\\vdots&\ddots&\vdots\\a_&a_&\cdots&a_&b_n\end\)

然後我們就可以進行高斯消元了,具體方法是:

\(step 1\)

列舉每一行,

​ 1.將第i行到第n行中第i列數的絕對值最大的數所在行與當前的第i行交換,防止當前行的第i列為0,消元無法 進行。

​ 2.用第i行的數乘上某個數去消其它行的數,使他們第i列變為0 。

​ 具體實現為:用第i行去消第j行,令\(x=a_/a_\),對於第j行的第k個數使\(a_-=a_*x\)

這樣,消元後的結果用矩陣表示出來就是乙個階梯形的矩陣,第i行的元素有\(a_\)~ \(a_\)。

\(step 2\)

現在我們最後一項只有乙個未知數,所以我們從後往前列舉,每次求出乙個未知數後,把該值分別代入前面的方程,再解前面乙個方程,就能求出所有未知數。

在消元完成之後,一定為三種情況之一:

1.若存在係數全部為 0 但常數不為 0的項,方程組無解。

2.若係數不為 0 的行恰好有 n 個,說明方程恰好有 1個解。

3.若係數不為 0 的行有 kp3389 【模板】高斯消元法

#includeusing namespace std;

const int m=2005;

double a[m][m],ans[m],eps=1e-7;

bool free[m];

int n,m,rk;

bool gauss()

if(fabs(a[mx][j])eps)

}} }

rk=i;

return 0;

}int main()

} if(rk=0;i--)

} if(cnt==1)

} for(int i=0;ip4035 [jsoi2008]球形空間產生器

題目給了我們n+1個n元二次方程,無法直接使用高斯消元。

於是我們用第乙個方程去減剩下的n個,得到了n個n元一次方程,直接套用高斯消元即可

帶狀矩陣

當求某些特殊問題(如概率dp,期望dp),矩陣係數矩陣為帶狀矩陣

例如:我們每次沿對角線對乙個\(d*d\) 的矩陣進行消元:

消完後還剩下:

然後回代即可。

所以消元為 \(o(nd^2)\),回代為\(o(nd)\)。

總複雜度為 \(o(nd^2)\),d為頻寬。

**lsk學長

高斯消元學習筆記

先來安利乙個部落格 高斯消元 線性基 學習筆記 本文就講了最基礎的高斯消元,高斯消元的擴充套件應用可以看上面的那個呀w 高斯消元是用來解線性方程組的。所謂線性方程組,就是一次方程組。對於解這個一般的線性方程組,求xi a11 x1 a12 x2 a1n xn b1 a21 x1 a22 x2 a2n...

高斯消元學習筆記

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

數論 高斯消元學習筆記

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