线性代数交互式教程 · 第4章

矩阵运算与逆矩阵

矩阵乘法的几何意义与逆矩阵——"撤销"变换的数学

4.1

矩阵乘法

若 A 是 m×n 矩阵,B 是 n×p 矩阵,则乘积 AB 是 m×p 矩阵,其第 i 行第 j 列元素为 A 的第 i 行与 B 的第 j 列的点积:

(AB)ᵢⱼ = Σₖ Aᵢₖ Bₖⱼ = A 的第 i 行 · B 的第 j 列

矩阵乘法的几何意义

若 A 代表变换 T_A,B 代表变换 T_B,则 AB 代表"先进行 T_B,再进行 T_A"的复合变换。

为什么矩阵乘法定义得如此"古怪"?

矩阵乘法的定义并非任意规定,而是为了恰好对应线性变换的复合。如果定义其他乘法方式,就无法保证"矩阵乘积 = 变换复合"这一核心性质。行乘列的规则是几何直观对代数形式的"强制要求"。

矩阵乘法不满足交换律

一般情况下,AB ≠ BA。这在几何上是显然的:先旋转再缩放,与先缩放再旋转,通常得到不同的结果。

矩阵乘法的性质

虽然不满足交换律,但矩阵乘法满足以下性质:

  • 结合律:(AB)C = A(BC)
  • 分配律:A(B+C) = AB + AC,(A+B)C = AC + BC
  • 单位元:AI = IA = A(I 是单位矩阵)
  • 零矩阵:A·0 = 0·A = 0

计算方法:手算矩阵乘法

手算 2×2 矩阵乘法:

[ a b ] [ e f ] = [ ae+bg af+bh ]
[ c d ] [ g h ] [ ce+dg cf+dh ]

对于更大的矩阵,可以采用"行×列"逐元素计算,或使用分块矩阵技巧。

4.2

逆矩阵

方阵 A 的逆矩阵 A⁻¹ 是满足以下条件的矩阵:

A·A⁻¹ = A⁻¹·A = I

其中 I 是单位矩阵。逆矩阵的存在意味着变换 A 是"可逆的"——可以通过另一个变换"撤销"它的效果。

几何直觉:逆矩阵 = "撤销"变换

如果 A 将空间旋转了 30°,那么 A⁻¹ 就将空间旋转 -30°。如果 A 将 x 方向拉伸 2 倍,A⁻¹ 就将 x 方向压缩 1/2 倍。逆矩阵就是原变换的"时间倒流"。

逆矩阵存在的条件

以下命题等价:

2×2 逆矩阵公式

若 A = [ a b ],则 A⁻¹ = 1/(ad-bc) [ d -b ]
        [ c d ]                               [ -c a ]

注意分母 ad - bc = det(A),所以当 det(A) = 0 时逆矩阵不存在。

工程应用:逆矩阵的广泛用途

解密(逆矩阵解码):在简单的 Hill 密码中,明文被编码为数字矩阵,通过与密钥矩阵相乘加密。解密方用密钥矩阵的逆矩阵恢复明文。虽然现代密码学使用更复杂的方案,但逆运算的思想仍是核心。

结构力学(柔度矩阵求逆):在结构分析中,刚度矩阵 K 描述力与位移的关系 F = Kx。柔度矩阵是 K 的逆:x = K⁻¹F。工程师通过求逆矩阵,从已知载荷计算结构变形。

电路分析(阻抗矩阵):多端口网络的电压-电流关系可用阻抗矩阵 Z 描述 V = ZI。导纳矩阵 Y = Z⁻¹ 则描述电流-电压关系 I = YV。阻抗与导纳互为逆矩阵。

马尔可夫链转移矩阵:在随机过程中,转移矩阵的幂描述多步演化。虽然转移矩阵通常不可逆,但其特征分解(涉及广义逆)用于分析稳态分布和收敛速度。

4.3

初等矩阵与求逆

初等矩阵是对单位矩阵进行一次初等行变换得到的矩阵。三种初等行变换对应三种初等矩阵:

  1. 交换两行:Eᵢⱼ 是交换单位矩阵第 i 行和第 j 行得到的矩阵
  2. 某行乘以非零常数:Eᵢ(c) 是将单位矩阵第 i 行乘以 c 得到的矩阵
  3. 某行加上另一行的倍数:Eᵢⱼ(k) 是将单位矩阵第 j 行的 k 倍加到第 i 行得到的矩阵

用初等变换求逆矩阵

求逆矩阵的标准方法——高斯-约当消元法:

  1. 构造增广矩阵 [A | I]
  2. 对增广矩阵进行初等行变换,将左侧 A 化为单位矩阵 I
  3. 此时右侧自动变为 A⁻¹
[A | I] --(初等行变换)--> [I | A⁻¹]
为什么这个方法有效?

每一步初等行变换都等价于左乘一个初等矩阵。假设经过一系列初等变换 E₁, E₂, ..., Eₖ 将 A 化为 I,则 Eₖ···E₂E₁A = I,所以 A⁻¹ = Eₖ···E₂E₁。这些初等矩阵同时作用于 I,就得到了 A⁻¹。

计算方法:手算求逆

以 2×2 矩阵为例,用增广矩阵法验证公式:

[A|I] = [ a b | 1 0 ]
        [ c d | 0 1 ]

通过行变换消去左下和右上元素,最终左侧化为 I,右侧即为 A⁻¹。

4.4

LU 分解思想

LU 分解将一个矩阵 A 分解为一个下三角矩阵 L(Lower triangular)和一个上三角矩阵 U(Upper triangular)的乘积:

A = LU

其中 L 的对角线元素为 1,U 是上三角矩阵。

LU 分解的意义

LU 分解是高斯消元法的矩阵形式。消元过程本质上就是将 A 化为上三角矩阵 U,同时记录消元步骤对应的下三角矩阵 L。

为什么 LU 分解有用?

当需要多次求解 Ax = b(不同 b)时,LU 分解只需做一次(O(n³)),之后每次求解只需两次回代(O(n²))。这在有限元分析、优化算法等需要反复求解的领域中极大提高了效率。

计算方法

  1. 对 A 进行高斯消元,得到上三角矩阵 U
  2. 记录每一步消元的乘数,构造下三角矩阵 L
  3. 验证 A = LU

注意:并非所有矩阵都有 LU 分解。当消元过程中需要行交换时,需要引入置换矩阵 P,得到 PA = LU(带选主元的 LU 分解)。

图 4-1:LU 分解的直观理解——将复杂矩阵分解为简单的三角矩阵
Ex

例题精讲

例1:手算矩阵乘法

计算 AB,其中 A = [ 1 2 ],B = [ 5 6 ]

                  [ 3 4 ]      [ 7 8 ]

第一步:计算 (AB)₁₁

A 的第 1 行 · B 的第 1 列 = 1×5 + 2×7 = 5 + 14 = 19

第二步:计算 (AB)₁₂

A 的第 1 行 · B 的第 2 列 = 1×6 + 2×8 = 6 + 16 = 22

第三步:计算 (AB)₂₁

A 的第 2 行 · B 的第 1 列 = 3×5 + 4×7 = 15 + 28 = 43

第四步:计算 (AB)₂₂

A 的第 2 行 · B 的第 2 列 = 3×6 + 4×8 = 18 + 32 = 50

AB = [ 19 22 ]
        [ 43 50 ]
例2:求逆矩阵

求 A = [ 4 7 ] 的逆矩阵。

        [ 2 6 ]

方法一:公式法

det(A) = 4×6 - 7×2 = 24 - 14 = 10

A⁻¹ = (1/10) [ 6 -7 ] = [ 0.6 -0.7 ]

               [ -2 4 ]   [ -0.2 0.4 ]

方法二:增广矩阵法

[ 4 7 | 1 0 ] --(R₁/4)--> [ 1 1.75 | 0.25 0 ]

[ 2 6 | 0 1 ]              [ 2 6     | 0     1 ]

--(R₂-2R₁)--> [ 1 1.75 | 0.25 0 ]

               [ 0 2.5 | -0.5 1 ]

--(R₂/2.5)--> [ 1 1.75 | 0.25 0 ]

               [ 0 1     | -0.2 0.4 ]

--(R₁-1.75R₂)--> [ 1 0 | 0.6 -0.7 ]

                   [ 0 1 | -0.2 0.4 ]

A⁻¹ = [ 0.6 -0.7 ]
        [ -0.2 0.4 ]
例3:解矩阵方程

解方程 AX = B,其中 A = [ 2 1 ],B = [ 5 3 ]

                           [ 1 3 ]       [ 4 7 ]

第一步:求 A⁻¹

det(A) = 2×3 - 1×1 = 5

A⁻¹ = (1/5) [ 3 -1 ] = [ 0.6 -0.2 ]

               [ -1 2 ]   [ -0.2 0.4 ]

第二步:计算 X = A⁻¹B

X = [ 0.6 -0.2 ] [ 5 3 ] = [ 0.6×5-0.2×4 0.6×3-0.2×7 ]

    [ -0.2 0.4 ] [ 4 7 ] [ -0.2×5+0.4×4 -0.2×3+0.4×7 ]

   = [ 3-0.8 1.8-1.4 ] = [ 2.2 0.4 ]

      [ -1+1.6 -0.6+2.8 ] [ 0.6 2.2 ]

第三步:验证

AX = [ 2 1 ] [ 2.2 0.4 ] = [ 4.4+0.6 0.8+2.2 ] = [ 5 3 ] = B ✓

       [ 1 3 ] [ 0.6 2.2 ] [ 2.2+1.8 0.4+6.6 ] [ 4 7 ]

X = [ 2.2 0.4 ]
      [ 0.6 2.2 ]
例4:LU 分解

对 A = [ 2 1 1 ] 进行 LU 分解。

        [ 4 3 3 ]

        [ 8 7 9 ]

第一步:高斯消元求 U

消去第 2 行第 1 列:R₂ - 2R₁(乘数 l₂₁ = 2)

消去第 3 行第 1 列:R₃ - 4R₁(乘数 l₃₁ = 4)

得到:[ 2 1 1 ]

      [ 0 1 1 ]

      [ 0 3 5 ]

消去第 3 行第 2 列:R₃ - 3R₂(乘数 l₃₂ = 3)

U = [ 2 1 1 ]

    [ 0 1 1 ]

    [ 0 0 2 ]

第二步:构造 L

L 的对角线为 1,下方元素为消元乘数:

L = [ 1 0 0 ]

    [ 2 1 0 ]

    [ 4 3 1 ]

第三步:验证 A = LU

直接计算 LU 可验证等于原矩阵 A。

L = [1 0 0; 2 1 0; 4 3 1],U = [2 1 1; 0 1 1; 0 0 2]
ML

MATLAB 代码演示

以下 MATLAB 代码演示矩阵乘法、求逆和 LU 分解。

matrix_inverse.m
% 第4章:矩阵乘法与逆矩阵 % 目标:掌握矩阵运算和 inv() 函数 A = [4 7; 2 6]; B = [5 6; 7 8]; % 矩阵乘法 disp('AB ='); disp(A * B); disp('BA ='); disp(B * A); % 逆矩阵 A_inv = inv(A); disp('A^{-1} ='); disp(A_inv); % 验证 disp('A * A^{-1} ='); disp(A * A_inv); % 行列式 disp('det(A) ='); disp(det(A));
lu_decomposition.m
% 第4章:LU 分解 % 目标:掌握 lu() 函数解线性方程组 A = [2 1 1; 4 3 3; 8 7 9]; % LU 分解(带置换矩阵) [L, U, P] = lu(A); disp('L ='); disp(L); disp('U ='); disp(U); disp('P ='); disp(P); % 验证 PA = LU disp('P*A - L*U ='); disp(P*A - L*U); % 用 LU 分解解 Ax = b b = [4; 10; 26]; y = L \ (P*b); % 前向替换 x = U \ y; % 后向替换 disp('解 x ='); disp(x);
elementary_transform.m
% 第4章:初等矩阵与求逆 % 目标:用增广矩阵法求逆 A = [2 1; 1 3]; % 构造增广矩阵 [A|I] aug = [A eye(2)]; disp('增广矩阵 [A|I] ='); disp(aug); % 行变换:R1 = R1/2 aug(1,:) = aug(1,:) / 2; disp('R1/2 后:'); disp(aug); % 行变换:R2 = R2 - R1 aug(2,:) = aug(2,:) - aug(1,:); disp('R2-R1 后:'); disp(aug); % 行变换:R2 = R2*(2/5) aug(2,:) = aug(2,:) * (2/5); disp('R2*(2/5) 后:'); disp(aug); % 行变换:R1 = R1 - 0.5*R2 aug(1,:) = aug(1,:) - 0.5*aug(2,:); disp('R1-0.5*R2 后 [I|A^{-1}] ='); disp(aug); A_inv = aug(:,3:4); disp('提取 A^{-1} ='); disp(A_inv);
← 上一章:第3章 矩阵与线性变换 下一章:第5章 基与维数(待续)