注:本文由AI生成
高斯消元法和高斯–约当消元法都是解线性方程组的基本方法。它们的核心思想都一样:对增广矩阵做初等行变换,把方程组变成容易求解的形式。
1. 基本概念
线性方程组
\[A\mathbf{x}=\mathbf{b}
\]
可以写成增广矩阵:
\[[A\mid \mathbf{b}]
\]
例如:
\[\begin{cases}
x+y+z=6\\
2x-y+z=3\\
x+2y-z=2
\end{cases}
\]
对应增广矩阵:
\[\left[\begin{array}{ccc|c}
1&1&1&6\\
2&-1&1&3\\
1&2&-1&2
\end{array}\right]
\]
初等行变换有三种:
- 交换两行;
- 某一行乘以非零常数;
- 某一行加上另一行的若干倍。
这些变换不会改变方程组的解。
2. 高斯消元法
高斯消元法分两步:
第一步:前向消元
从左到右,逐列消去主元下方的元素,把矩阵化为行阶梯形矩阵。
行阶梯形矩阵满足:
- 每一行的第一个非零元素称为主元;
- 主元所在列的位置逐行向右移;
- 全零行在最下方。
继续上面的例子:
\[\left[\begin{array}{ccc|c}
1&1&1&6\\
2&-1&1&3\\
1&2&-1&2
\end{array}\right]
\]
消去第一列主元下方的元素:
\[R_2 \leftarrow R_2-2R_1
\]
\[R_3 \leftarrow R_3-R_1
\]
得到:
\[\left[\begin{array}{ccc|c}
1&1&1&6\\
0&-3&-1&-9\\
0&1&-2&-4
\end{array}\right]
\]
为了方便,交换第二、三行:
\[\left[\begin{array}{ccc|c}
1&1&1&6\\
0&1&-2&-4\\
0&-3&-1&-9
\end{array}\right]
\]
消去第三行第二列元素:
\[R_3 \leftarrow R_3+3R_2
\]
得到:
\[\left[\begin{array}{ccc|c}
1&1&1&6\\
0&1&-2&-4\\
0&0&-7&-21
\end{array}\right]
\]
这就是行阶梯形矩阵。
第二步:回代
从最后一行开始向上求解。
最后一行:
\[-7z=-21
\]
所以:
\[z=3
\]
代入第二行:
\[y-2z=-4
\]
\[y-6=-4
\]
\[y=2
\]
再代入第一行:
\[x+y+z=6
\]
\[x+2+3=6
\]
\[x=1
\]
所以解为:
\[x=1,\quad y=2,\quad z=3
\]
高斯消元法的特点是:只消去主元下方的元素,最后需要回代。
3. 高斯–约当消元法
高斯–约当消元法是高斯消元法的扩展。它不但消去主元下方的元素,还消去主元上方的元素,并且把每个主元都变成 1,最终得到简化行阶梯形矩阵。
简化行阶梯形矩阵满足:
- 它是行阶梯形矩阵;
- 每个主元都是 1;
- 主元所在列的其余元素全是 0。
继续上面的例子。
从行阶梯形矩阵开始:
\[\left[\begin{array}{ccc|c}
1&1&1&6\\
0&1&-2&-4\\
0&0&-7&-21
\end{array}\right]
\]
先把第三行主元化为 1:
\[R_3 \leftarrow -\frac{1}{7}R_3
\]
得到:
\[\left[\begin{array}{ccc|c}
1&1&1&6\\
0&1&-2&-4\\
0&0&1&3
\end{array}\right]
\]
现在消去第三列上方的元素。
第二行加上两倍第三行:
\[R_2 \leftarrow R_2+2R_3
\]
第一行减去第三行:
\[R_1 \leftarrow R_1-R_3
\]
得到:
\[\left[\begin{array}{ccc|c}
1&1&0&3\\
0&1&0&2\\
0&0&1&3
\end{array}\right]
\]
再消去第一行第二列的元素:
\[R_1 \leftarrow R_1-R_2
\]
得到:
\[\left[\begin{array}{ccc|c}
1&0&0&1\\
0&1&0&2\\
0&0&1&3
\end{array}\right]
\]
这就是简化行阶梯形矩阵。它直接给出:
\[x=1,\quad y=2,\quad z=3
\]
高斯–约当消元法的特点是:消去主元上方和下方的所有元素,最后不需要回代,解可以直接读出。
4. 两者的区别
| 比较项 |
高斯消元法 |
高斯–约当消元法 |
| 最终矩阵形式 |
行阶梯形 |
简化行阶梯形 |
| 是否消去主元上方元素 |
不消去 |
消去 |
| 是否需要回代 |
需要 |
不需要 |
| 计算量 |
约 \(O(n^3/3)\) |
约 \(O(n^3/2)\) |
| 主要用途 |
解单个方程组、LU 分解 |
求逆矩阵、同时解多个右端项 |
简单说:
- 高斯消元法更快,适合只解一个线性方程组;
- 高斯–约当消元法计算量稍大,但结果更彻底,特别适合求矩阵的逆。
5. 求逆矩阵
高斯–约当消元法常用来求逆矩阵。
要求矩阵 \(A\) 的逆,可以构造增广矩阵:
\[[A\mid I]
\]
然后通过初等行变换,把左边变成单位矩阵:
\[[I\mid A^{-1}]
\]
例如:
\[A=
\begin{bmatrix}
1&2\\
3&4
\end{bmatrix}
\]
构造:
\[\left[\begin{array}{cc|cc}
1&2&1&0\\
3&4&0&1
\end{array}\right]
\]
消元:
\[R_2 \leftarrow R_2-3R_1
\]
得到:
\[\left[\begin{array}{cc|cc}
1&2&1&0\\
0&-2&-3&1
\end{array}\right]
\]
第二行除以 \(-2\):
\[\left[\begin{array}{cc|cc}
1&2&1&0\\
0&1&\frac{3}{2}&-\frac{1}{2}
\end{array}\right]
\]
第一行减去两倍第二行:
\[\left[\begin{array}{cc|cc}
1&0&-2&1\\
0&1&\frac{3}{2}&-\frac{1}{2}
\end{array}\right]
\]
所以:
\[A^{-1}=
\begin{bmatrix}
-2&1\\
\frac{3}{2}&-\frac{1}{2}
\end{bmatrix}
\]
6. 数值稳定性与主元选择
在实际数值计算中,如果主元非常接近 0,直接消元会导致误差放大。因此通常需要使用部分主元法或全主元法。
- 部分主元法:每次消元前,在当前列中选取绝对值最大的元素作为主元,并交换到主元位置。
- 全主元法:在所有剩余子矩阵中选取绝对值最大的元素作为主元。
例如:
\[\begin{cases}
0.001x+y=1\\
x+y=2
\end{cases}
\]
如果直接用 \(0.001\) 作主元,会产生较大的舍入误差。更好的做法是先交换两行,用 \(1\) 作主元。
7. 特殊情况:无解与无穷多解
通过行阶梯形矩阵可以判断解的情况。
\[[0\ 0\ 0\mid c],\quad c\ne 0
\]
这样的行,说明方程组无解。
- 如果主元个数小于未知数个数,则方程组有无穷多解,需要引入自由变量。
例如:
\[\left[\begin{array}{ccc|c}
1&2&3&6\\
0&1&2&4\\
0&0&0&0
\end{array}\right]
\]
第三行全为零,说明第三个变量可以自由取值,因此有无穷多解。
总结:
- 高斯消元法:前向消元到行阶梯形,再回代求解;
- 高斯–约当消元法:继续消元到简化行阶梯形,直接读出解;
- 两者都是线性代数和数值计算中最基础、最重要的算法。