简介
高斯消元是一个用于求方程组的解的算法。在线性代数中非常重要。一般而言,其复杂度为 O ( n 3 ) O(n^3) O(n3),可以承受 200 200 200及以下的数据范围(当然有的题目时限是 10000 m s 10000ms 10000ms什么的,特殊情况特殊对待)。
算法理解
考虑一个二元一次方程组怎么解。
{ a 1 x 1 + a 2 x 2 = a 3 b 1 x 1 + b 2 x 2 = b 3 \begin{cases}a_1x_1+a_2x_2=a_3\\b_1x_1+b_2x_2=b_3\end{cases} {
a1x1+a2x2=a3b1x1+b2x2=b3
首先将第一个方程化为 x 1 + a 2 a 1 x 2 = a 3 a 1 x_1+\frac{a_2}{a_1}x_2=\frac{a_3}{a_1} x1+a1a2x2=a1a3,然后两边再同乘 b 1 b_1 b1,这样在两个方程中, x 1 x_1 x1的系数就都化为 b 1 b_1 b1,然后两式相减,就可以消去 x 1 x_1 x1,然后就可以解出 x 2 x_2 x2,再回代,求解 x 1 x_1 x1。
那么多元方程组也是一样的思路。
{ a 1 , 1 x 1 + a 1 , 2 x 2 + ⋯ = a 1 , n + 1 a 2 , 1 x 1 + a 2 , 2 x 2 + ⋯ = a 2 , n + 1 ⋮ a n , 1 x 1 + a n , 2 x 2 + ⋯ = a n , n + 1 \begin{cases}a_{1,1}x_1+a_{1,2}x_2+\dots=a_{1,n+1}\\a_{2,1}x_1+a_{2,2}x_2+\dots=a_{2,n+1}\\\vdots\\a_{n,1}x_1+a_{n,2}x_2+\dots=a_{n,n+1}\end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧a1,1x1+a1,2x2+⋯=a1,n+1a2,1x1+a2,2x2+⋯=a2,n+1⋮an,1x1+an,2x2+⋯=an,n+1
首先把第一个方程化为 x 1 + a 1 , 2 a 1 , 1 x 2 + ⋯ = a 1 , n + 1 a 1 , 1 x_1+\frac{a_{1,2}}{a_{1,1}}x_2+\dots=\frac{a_{1,n+1}}{a_{1,1}} x1+a1,1a1,2x