线性代数教程 · 第3章

线性方程组

Ax = b 的解空间几何

← Linear Algebra Tutorial

3.1 解的存在性与唯一性

线性方程组 Ax = b 是线性代数的核心问题。《Linear Algebra and Its Applications》将其作为全书起点,因为它直接连接理论与应用。

从映射的角度看,Ax = b 问的是:b 是否在 A 的列空间中? 三种情况:

秩-零化度定理

dim(Col A) + dim(Null A) = n。即"独立方向数" + "自由方向数" = 总维度。

几何解释

每一行方程代表一个超平面。方程组的解就是所有超平面的交点。当超平面"恰好"相交于一点时,有唯一解;当它们相交于一条线或一个平面时,有无穷多解;当它们"平行"不相交时,无解。

3.2 高斯消元法

高斯消元法的本质是:通过初等行变换将矩阵化为行阶梯形。这些变换不改变解集,因为等价于左乘可逆矩阵。

三种初等行变换:

  1. 交换两行
  2. 某行乘以非零常数
  3. 某行加上另一行的倍数
示例:求解 3×3 方程组

方程组:

2x + y - z = 8
-3x - y + 2z = -11
-2x + y + 2z = -3

增广矩阵经消元后得到上三角矩阵,回代求解得 x=2, y=3, z=-1。

% MATLAB:高斯消元与LU分解 A = [2 1 -1; -3 -1 2; -2 1 2]; b = [8; -11; -3]; % 方法1:直接求解 x = A \ b; % [2; 3; -1] % 方法2:LU分解 [L, U, P] = lu(A); y = L \ (P*b); x_lu = U \ y; % 相同结果 % 验证 residual = norm(A*x - b); % ≈ 0(机器精度)

LU 分解

LU 分解将 A 分解为下三角矩阵 L 和上三角矩阵 U 的乘积。这使得求解多个右端项的方程组非常高效 —— 只需一次分解,然后多次回代。

PA = LU,然后 Ly = Pb,Ux = y

3.3 列空间与零空间

《Linear Algebra Done Right》将这四个子空间(列空间、零空间、行空间、左零空间)作为理解矩阵结构的关键。

子空间定义维数直觉
列空间 Col AA 的列的所有线性组合rank(A)"能到达"的所有输出
零空间 Null AAx = 0 的所有解n - rank(A)"被压缩到零"的输入
行空间 Row AA 的行的所有线性组合rank(A)影响输出的输入方向
左零空间 Null AᵀAᵀy = 0 的所有解m - rank(A)"无法被表示"的输出方向
正交补关系

Col A 的正交补是 Null Aᵀ,Row A 的正交补是 Null A。这意味着:任何向量都可以唯一分解为"在列空间中"和"在左零空间中"两部分。

3.4 综合例题

例1:用高斯消元法求解方程组 x₁+2x₂+x₃=5, 3x₁+x₂-3x₃=-1, 2x₁+3x₂+x₃=8
第一步:写出增广矩阵
[1 2 1 | 5]
[3 1 -3 | -1]
[2 3 1 | 8]
第二步:消元——将第一列下方的元素化为零
R₂ ← R₂ - 3R₁:[1 2 1 | 5]
                          [0 -5 -6 |-16]
                          [2 3 1 | 8]
R₃ ← R₃ - 2R₁:[1 2 1 | 5]
                          [0 -5 -6 |-16]
                          [0 -1 -1 | -2]
第三步:继续消元——将第二列下方的元素化为零
R₃ ← R₃ - (1/5)R₂:[1 2 1 | 5]
                           [0 -5 -6 |-16]
                           [0 0 1/5|-6/5]
R₃ ← -5·R₃:[1 2 1 | 5]
                         [0 -5 -6 |-16]
                         [0 0 1 | 6]
第四步:回代求解
由第三行:x₃ = 6
由第二行:-5x₂ - 6×6 = -16 → -5x₂ = -16 + 36 = 20 → x₂ = -4
由第一行:x₁ + 2×(-4) + 6 = 5 → x₁ - 8 + 6 = 5 → x₁ = 7
x₁ = 7,x₂ = -4,x₃ = 6
例2:求矩阵 A = [[1,2,3],[4,5,6],[7,8,9]] 的秩、列空间和零空间
第一步:行化简
[1 2 3]
[4 5 6]
[7 8 9]

R₂ ← R₂ - 4R₁,R₃ ← R₃ - 7R₁:
[1 2 3]
[0 -3 -6]
[0 -6 -12]

R₃ ← R₃ - 2R₂:
[1 2 3]
[0 -3 -6]
[0 0 0]
第二步:确定秩和列空间
行阶梯形有 2 个非零行,因此 rank(A) = 2
主元列是第 1 列和第 2 列,列空间由 A 的第 1、2 列张成:
Col(A) = span{(1, 4, 7)ᵀ, (2, 5, 8)ᵀ}
第三步:求零空间
由行阶梯形得方程组:
x₁ + 2x₂ + 3x₃ = 0
-3x₂ - 6x₃ = 0 → x₂ = -2x₃
令自由变量 x₃ = t,则 x₂ = -2t,x₁ = -2(-2t) - 3t = t
Null(A) = {t(1, -2, 1)ᵀ : t ∈ R} = span{(1, -2, 1)ᵀ}
rank(A) = 2,Col(A) 由 (1,4,7)ᵀ 和 (2,5,8)ᵀ 张成,Null(A) 由 (1,-2,1)ᵀ 张成,dim(Null) = 1(满足秩-零化度定理:2 + 1 = 3)
例3:判断方程组 x+y+z=1, x+y+z=2 是否有解
第一步:写出增广矩阵
系数矩阵 A = [[1, 1, 1], [1, 1, 1]]
增广矩阵 [A|b]:
[1 1 1 | 1]
[1 1 1 | 2]
第二步:行化简
R₂ ← R₂ - R₁:
[1 1 1 | 1]
[0 0 0 | 1]

最后一行表示 0 = 1,出现矛盾!
第三步:利用秩判定
rank(A) = 1(系数矩阵只有一行独立)
rank([A|b]) = 2(增广矩阵有两行独立)
rank(A) ≠ rank([A|b]),方程组无解
几何意义:b = (1, 2)ᵀ 不在 A 的列空间中
方程组无解(两个方程要求 x+y+z 同时等于 1 和 2,这是不可能的;b = (1,2)ᵀ 不在 A 的列空间中)

3.5 工程应用:电路网络

电路分析是线性方程组的经典应用。基尔霍夫定律(KCL 和 KVL)导出线性方程组,节点电压法或回路电流法将其系统化。

工程实例:电阻网络

一个包含 n 个节点的电阻网络,节点电压方程为 Gv = i,其中 G 是电导矩阵(对称正定),v 是节点电压向量,i 是注入电流向量。求解这个线性系统即可得到各节点电压。

稀疏性:大型电路网络的电导矩阵通常是稀疏的(大部分元素为零)。利用稀疏矩阵算法,可以高效求解包含数百万节点的电路。

% MATLAB:电路节点分析 % 三节点电阻网络 G = [3 -1 -1; % 电导矩阵(对称) -1 3 -1; -1 -1 3]; i = [1; 0; -1]; % 注入电流 v = G \ i; % 节点电压 [0.5; 0; -0.5] % 验证功率守恒 power_in = i' * v; % 1(功率平衡) % 大规模稀疏电路 n = 1000; G_sparse = gallery('tridiag', n, -1, 3, -1); i_sparse = zeros(n,1); i_sparse(1) = 1; i_sparse(n) = -1; v_sparse = G_sparse \ i_sparse;