高斯消元(by wyx)
引入
高斯消元法(Gauss–Jordan elimination)是求解线性方程组的经典算法,它在当代数学中有着重要的地位和价值,是线性代数课程教学的重要组成部分。
高斯消元法除了用于线性方程组求解外,还可以用于行列式计算、求矩阵的逆,以及其他计算机和工程方面。
正题
前置知识:解方程组
比如说现在有一个方程组:
{4x+3y=102x+5y=12
第一步,将第一个方程 × 2 可得 4x+10y=24
然后把第二个方程与第一个方程相减得 7y=14
这个时候,我们可以直接得出 y=2
然后把 y=2 会带到第一个方程中得 4x+6=10
可以得出 x=1
∴ 方程的解是
{x=1y=2
高斯消元
上述得方法是解方程组得基本方法,即带入消元和加减消元。
这个方法得通用性很强,而高斯消元就是这两种方法得应用。
下面举一个例子
⎩⎨⎧6x1+8x2+4x3=223x1+2x2+12x3=292x1+4x2+6x3=18
把上面得方程组转化为矩阵是
6328244126∣∣∣222918
矩阵左边表示每一项得系数,右边表示结果。
首先,我们可以通过第一行消掉第二行和第三行得第一项
具体的,就是说先把第二行 × 2 ,然后和第一行减法消元,第三行也是一样的做法,先 × 3 再减法消元。
然后,我们就得到了一个新的矩阵
6008−4442014∣∣∣223632
这个时候,发现只有第一行含有 x1 这一项,同时我们也处理完了第一条方程,之后就先不管它。
接着我们用相同得办法解决 x2 这一项。
把第三行 × (−1) ,再和第二行做减法消元得
6008−40420−34∣∣∣2236−68
关键
这个时候,把矩阵重新转化为方程组得到
⎩⎨⎧6x1+8x2+4x3=22−4x2+20x3=36−34x3=−68
根据第三条方程可得 x3=2
接着把 x3=2 带入上面一条方程中得 −4x2+40=36
解得 x2=1
然后把 x2 , x3 一起带入第一条方程中
解得 x1=1
∴ 方程的解是
⎩⎨⎧x1=1x2=1x3=2
总结方法
首先,先把方程变成一个矩阵
a1,1a2,1⋮an,1a1,2a2,2⋮an,2a1,3a2,3⋮an,3……⋱…a1,na2,n⋮an,n∣∣∣∣a1,n+1a2,n+1⋮an,n+1
然后,我们把它变成上三角矩阵,即
a1,1′0⋮0a1,2′a2,2′⋮0a1,3′a2,3′⋮0……⋱…a1,n′a2,n′⋮an,n′∣∣∣∣a1,n+1′a2,n+1′⋮an,n+1′
接着,我们可以从下往上依次求解每个未知数。
判断无解或有无数解
前置知识 含参方程
对于一个一元一次方程
ax=b
-
当 a=0 时,方程有唯一解。
-
当 a=0 且 b=0 时,方程有无数个解。
-
当 a=0 且 b=0 时,方程无解。
把上面三条性质扩展到高斯消元中。
如果有一行在消元后左边的系数全变成了 0
-
当右边的结果等于 0 时,方程有无数个解。
-
当右边的结果不等于 0 时,方程无解。
切记,无解的优先级高于有无数个解。
例题
P3389 【模板】高斯消元法
P2455 [SDOI2006] 线性方程组
P2447 [SDOI2010] 外星千足虫
[ABC366G] XOR Neighbors