數論 高斯消元學習筆記

2021-09-25 17:38:32 字數 2560 閱讀 2352

\(q:\)高斯消元是什麼?聽起來好高階啊??

\(a:\)二元一次方程組解過嗎?那就是高斯消元。

首先對高斯消元做一些準備:

\(q:\)什麼是線性方程組?

\(a:\)

雞兔同籠方程組 由\(m\)個\(n\)元一次方程所構成的方程組。

為了簡化表達,做出如下定義:

\(example:\)

假如現有一方程組:

\[\beginx_1+x_2+4x_3=17\\5x_1+x_2+4x_3=25\\8x_1+x_2+0x_3=19\end\]

其係數矩陣即為:

\[\begin1&1&4\\5&1&4\\8&1&0\end\]

(???)

增廣矩陣為:

\[\begin1&1&4&17\\5&1&4&25\\8&1&0&19\end\]

\(q:\)這些很簡單啊,接下來要幹什麼呢?

\(a:\)接著我們對方程組進行求解,包括如下\(3\)個步驟:

稱以上操作為矩陣的「初等行變換」。

\(q:\)這些毫無意義的語言 都是什麼意思啊?

以乙個二元一次方程組為例:

\[\beginx_1+9x_2=21\quad(1)\\9x_1+x_2=29\quad(2)\end\]

增廣矩陣:

\[\begin1&9&21\\9&1&29\end\]

\((1)*=-9:\)

\[\begin-9x_1+-81x_2&=-189\quad(1)\\9x_1+x_2&=29\quad(2)\end\]

增廣矩陣:

\[\begin-9&-81&-189\\9&1&29\end\]

\((1)+=(2):\)

\[\begin-80x_2&=-160\\9x_1+x_2&=29\end\]

\[\beginx_2&=2\\9x_1+x_2&=29\end\]

增廣矩陣:

\[\begin0&1&2\\9&1&29\end\]

\(swap((1),(2)):\)

\[\begin9x_1+x_2&=29\\x_2&=2\end\]

增廣矩陣:

\[\begin9&1&29\\0&1&2\end\]

怎麼樣,是不是很簡單啊?

初等行變換後的矩陣被稱為「階梯型矩陣」(是不是很像?並沒有)。

係數部分稱為「上三角矩陣」。

最後從下到上更新一遍即可求出方程組的解。

另外,若在求解過程**現了\(0=a\)的情況,則方程組無解。

若過程中無法消元(找不到乙個方程,\(x_1\sim x_\)係數為\(0\),\(x_i\)係數不為\(0\)),則解不唯一,稱此類\(x_i\)為自由元。

時間複雜度 \(o(n^3)\)

空間複雜度 \(o(n^2)\)

接下來是實際應用。

p3389 【模板】高斯消元法

這就是裸的模板題了。

時間複雜度 \(o(n^3)\)

空間複雜度 \(o(n^2)\)

**:

#include #include inline double abs(double x)

int n;

double a[105][105];

const double eps=1e-7;//精度視情況而定,不要太小或太大

int main()

}for(int i=1;i<=n;++i)printf("%.2f\n",a[i][n+1]/a[i][i]);

return 0;

}

p4035 [jsoi2008]球形空間產生器

稍微轉換一下題目

設已知點為\(a_i\),求乙個點\((x_1,x_2,\dots,x_n)\),使得存在常數\(dis\),滿足

\[\forall i\in[1,n+1],\sum_(a_-x_j)^2=dis\]

這樣就有了\(n+1\)個方程,但發現無法求解。

考慮構造\(n\)個\(n\)元一次方程組進行高斯消元。

用相鄰的兩個方程做差,得:

\[\sum_(a_-x_j)^2-\sum_(a_-x_j)^2=dis-dis\]

\[\sum_(a_-x_j)^2-(a_-x_j)^2=0\]

\[\sum_2(a_-a_)x_j=\sum_(a_^2-a_^2)\]

高斯消元即可。

時間複雜度 \(o(n^3)\)

空間複雜度 \(o(n^2)\)

**:

#include #include #include const double eps=1e-8;

int n;

double p[15][15],b[15],c[15][15];

int main()

for(int i=1;i<=n;++i)

for(int j=1;j<=n;++j)

}for(int i=1;i<=n;++i)

printf("%.3f%c",b[i]/c[i][i],i==n?'\n':' ');

return 0;

}

難題就不繼續**了,畢竟我也不會

數論 高斯消元

學了一天的高斯消元,又退了兩天,才接著補坑,唉 自己為什麼這麼不爭氣 主要的學習高斯消元的 還是 何江舟的 高斯消元解線性方程組 注意幾點 1.equ和var分別代表方程數和未知數 2.在 中注意k和col的實時變化,k迴圈結束後表示消元後的最後乙個行,col迴圈後的為第var 1列 0 var 3...

數論 高斯消元

給出 n 組方程,每組方程形如 sum limits n a ix i b i 要求求出 x 1,x 2 cdots x n 或告知無解。我們把這些方程轉化為矩陣 begin a a a cdots a b 1 a a a cdots a b 2 vdots vdots vdots vdots vd...

高斯消元學習筆記

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