\(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...