跳到正文
格致开物MATHWIKI

线性方程组与高斯消元

线性方程组(system of linear equations)要求若干个一次等式同时成立。高斯消元(Gaussian elimination)通过不改变解集的行运算,逐步消去未知数,最后回代;它也能辨认方程组是有唯一解、无解,还是有无穷多解。

先看平面上的两条直线: 2x+y=5,x−y=1. 同时满足两式的点,就是两条直线的交点。第二式乘 2 后,从第一式减去它,得 3y=3,所以 y=1、x=2。图上的交点 (2,1) 与代入核对一致。

直线二x加y等于五与直线x减y等于一在二一处相交,标出交点和两条方程
每一条方程限定一条直线;同时满足两条,才是方程组的解。

消元保持解集

对两个方程 E1=0、E2=0,把第二个改成 E2−cE1=0。若原来两式成立,新式当然成立;反过来,保留第一式后,用 (E2−cE1)+cE1=E2 可以恢复第二式。因此这一步前后的共同解完全相同。

交换两行、把某一行乘非零常数,也都能反向恢复。三种操作叫初等行变换。但把一行乘零会抹掉信息,不能算可逆操作;“把两行相加后只保留和”若同时丢掉两条原式,也不能保证等价。

三元方程组的完整计算

考虑 {x+y+z=6,2x+y−z=1,x−y+2z=5. 按变量 x,y,z 的顺序,把系数和右端写成增广矩阵。竖线右侧是常数,不是第四个未知数: [111621−111−125]. 用第一行消去下面两行的 x,即 R2←R2−2R1、R3←R3−R1: [11160−1−3−110−21−1]. 第二行乘 −1 后是 y+3z=11。再用它消去第三行的 y,即新第三行加上新第二行的两倍: [11160131100721]. 从最后一行得到 z=3;第二行给出 y=11−3⋅3=2;第一行给出 x=6−2−3=1。代回原式,三个左端分别为 6,1,5,验证了 (1,2,3) 的确是解。因为每一步可逆,而且每个未知数都有一个非零主元,这里没有剩下可自由选择的变量,解也唯一。

若某列预定的主元为零,可以与下方非零行交换;若整列下方都为零,就跳过这一列,留待辨认自由变量。计算机使用浮点数时,还常优先选绝对值较大的主元,以减轻舍入误差;精确代数和数值稳定性是两件事。

零行与解的三种情形

考虑第二行是第一行两倍的方程组 x+y=3,2x+2y=6. 消元后第二行变成 0=0。它没有增加新约束,因此可令 y=t,得到全部解 (x,y)=(3−t,t);图上是两条完全重合的直线。

若右端的 6 改成 7,消元后第二行变为 0=1。没有数能满足,原方程组无解;几何上两条直线平行且不同。非零主元覆盖所有未知数且不出现矛盾行时,才有唯一解。这个判断以后可用矩阵的秩精确表述。

矩阵语言和方法的边界

把系数矩阵记为 A、未知量列向量记为 u、右端记为 b,方程组便是 Au=b。行变换等于对所有方程同时做等价改写;它不会改变解,但通常会改变系数矩阵原来的几何映射,所以中途的矩阵不应被误认为原来的变换。

高斯消元适合求精确的小方程组,也是一系列数值方法的基础。对巨大稀疏矩阵或含测量误差的数据,还需考虑存储、舍入和问题是否本来就无精确解;后一种情况可转向最小二乘法。若只想知道方阵是否可逆,行列式也给出一个判据,但实际求解时通常仍要消元。

若右端全是零,方程组称为齐次,总有零解;有自由变量时还会有非零解。若右端不全为零,必须先检查有无矛盾行:存在一个解时,全部解是它加上齐次方程组的全部解。这个判断与三维平面的交集及秩的条件,见三元线性方程组的解集。当三阶系数矩阵的行列式非零,还可以用克拉默法则逐列写出三个未知量;它适合小规模的符号计算。

参考资料