高斯-约当消元法解线性方程组
题目描述:
我们有一个包含 n 个未知数的 n 个线性方程构成的方程组。这个方程组可以用矩阵形式表示为 Ax = b,其中 A 是一个 n x n 的系数矩阵,x 是包含 n 个未知数的列向量,b 是常数项列向量。我们的目标是找到一个向量 x,使得等式成立。高斯-约当消元法通过将增广矩阵 [A | b] 通过行变换化为行最简形式(或称简化行阶梯形),从而直接得到每个未知数的解。
解题过程:
第一步:构造增广矩阵
将线性方程组的系数矩阵 A 和常数向量 b 合并,形成一个 n x (n+1) 的增广矩阵。
例如,对于方程组:
2x + y - z = 8
-3x - y + 2z = -11
-2x + y + 2z = -3
其增广矩阵为:
[ 2 1 -1 | 8 ]
[-3 -1 2 | -11]
[-2 1 2 | -3 ]
第二步:前向消元(化为行阶梯形)
此步骤的目标是自上而下,将矩阵主对角线以下的元素全部变为零,形成一个上三角矩阵。我们逐列进行处理,当前处理的行称为“主元行”,主对角线上的元素称为“主元”。
-
处理第一列(目标是使 a₂₁ 和 a₃₁ 变为 0):
- 确保 a₁₁(第一个主元)不为零。如果为零,需要与下方一个该列元素不为零的行交换。在我们的例子中,a₁₁=2 ≠ 0,很好。
- 消去 a₂₁(值为-3): 计算倍数 m₂₁ = a₂₁ / a₁₁ = -3 / 2 = -1.5。将第1行乘以 m₂₁ 后加到第2行上。
新第2行 = 旧第2行 + (-1.5) * 第1行
= [-3, -1, 2, -11] + (-1.5)*[2, 1, -1, 8]
= [-3, -1, 2, -11] + [-3, -1.5, 1.5, -12]
= [0, -2.5, 3.5, -23] - 消去 a₃₁(值为-2): 计算倍数 m₃₁ = a₃₁ / a₁₁ = -2 / 2 = -1。将第1行乘以 m₃₁ 后加到第3行上。
新第3行 = 旧第3行 + (-1) * 第1行
= [-2, 1, 2, -3] + (-1)*[2, 1, -1, 8]
= [-2, 1, 2, -3] + [-2, -1, 1, -8]
= [0, 0, 3, -11]
现在增广矩阵变为:
[ 2 1 -1 | 8 ]
[ 0 -2.5 3.5 | -23]
[ 0 0 3 | -11]
-
处理第二列(目标是使 a₃₂ 变为 0):
- 当前主元是 a₂₂,值为 -2.5。注意到 a₃₂ 已经是 0,所以这一列不需要进行任何操作。矩阵已经是行阶梯形(上三角矩阵)。
第三步:后向代入(高斯消元法)与约当消元法的区别
- 高斯消元法 会在此停步,然后通过回代求解:从最后一行解出 z,代入第二行解出 y,再代入第一行解出 x。
- 高斯-约当消元法 会继续操作,目标是将主元化为1,并且将主元上方和下方的所有元素都化为0,最终得到行最简形式,使得解可以直接读出。
第四步:约当消元(化为行最简形式)
此步骤自下而上进行,确保每个主元为 1,且是该列唯一的非零元。
-
处理第三列(主元 a₃₃):
- 将主元 a₃₃ 化为 1: 将第3行除以 a₃₃ (3)。
新第3行 = 第3行 / 3 = [0, 0, 3, -11] / 3 = [0, 0, 1, -11/3] - 利用第3行消去其上方行(第1行和第2行)的第三列元素:
- 消去 a₁₃(值为-1): 新第1行 = 旧第1行 - (a₁₃) * 新第3行 = 旧第1行 - (-1) * 新第3行 = 旧第1行 + 新第3行。
= [2, 1, -1, 8] + [0, 0, 1, -11/3] = [2, 1, 0, 8 - 11/3] = [2, 1, 0, 13/3] - 消去 a₂₃(值为3.5): 新第2行 = 旧第2行 - (a₂₃) * 新第3行 = 旧第2行 - (3.5) * 新第3行。
= [0, -2.5, 3.5, -23] - (7/2) * [0, 0, 1, -11/3]
= [0, -2.5, 3.5, -23] - [0, 0, 7/2, -77/6]
= [0, -2.5, 0, (-138/6) + (77/6)] = [0, -2.5, 0, -61/6]
现在矩阵变为:
[ 2 1 0 | 13/3 ]
[ 0 -2.5 0 | -61/6 ]
[ 0 0 1 | -11/3 ]
- 消去 a₁₃(值为-1): 新第1行 = 旧第1行 - (a₁₃) * 新第3行 = 旧第1行 - (-1) * 新第3行 = 旧第1行 + 新第3行。
- 将主元 a₃₃ 化为 1: 将第3行除以 a₃₃ (3)。
-
处理第二列(主元 a₂₂):
- 将主元 a₂₂ 化为 1: 将第2行除以 a₂₂ (-2.5 或 -5/2)。
新第2行 = 第2行 / (-5/2) = [0, -2.5, 0, -61/6] * (-2/5) = [0, 1, 0, (61/6)*(2/5)] = [0, 1, 0, 122/30] = [0, 1, 0, 61/15] - 利用第2行消去其上方行(第1行)的第二列元素:
- 消去 a₁₂(值为1): 新第1行 = 旧第1行 - (a₁₂) * 新第2行 = 旧第1行 - (1) * 新第2行。
= [2, 1, 0, 13/3] - [0, 1, 0, 61/15]
= [2, 0, 0, (65/15) - (61/15)] = [2, 0, 0, 4/15]
- 消去 a₁₂(值为1): 新第1行 = 旧第1行 - (a₁₂) * 新第2行 = 旧第1行 - (1) * 新第2行。
- 将主元 a₂₂ 化为 1: 将第2行除以 a₂₂ (-2.5 或 -5/2)。
-
处理第一列(主元 a₁₁):
- 将主元 a₁₁ 化为 1: 将第1行除以 a₁₁ (2)。
新第1行 = 第1行 / 2 = [2, 0, 0, 4/15] / 2 = [1, 0, 0, 2/15]
- 将主元 a₁₁ 化为 1: 将第1行除以 a₁₁ (2)。
第五步:得出解
现在增广矩阵已经化为行最简形式:
[ 1 0 0 | 2/15 ]
[ 0 1 0 | 61/15 ]
[ 0 0 1 | -11/3 ]
这直接对应着:
x = 2/15
y = 61/15
z = -11/3
方程组的解向量 x 即为 [2/15, 61/15, -11/3]^T。