想象你走进了一家老式锁匠铺。铺子里有个保险箱,箱门上装着一套「字母打乱器」:你把一句密码放进去,它会按固定规则把字母重新排列,变成一堆乱码。老板告诉你,这台机器是可逆的——只要找到藏在抽屉里的那枚还原钥匙,把乱码再喂进去一次,就能变回原来的句子。可也有几台机器,老板摇摇头说:“这台不行,它会把两个不同的句子压成同一串乱码,信息丢了,世界上没有任何钥匙能救回来。” 这就是线性代数里矩阵和逆矩阵的关系。矩阵是一种按照规则“移动坐标”的机器;逆矩阵就是那枚“把移动撤回”的钥匙。找出钥匙的过程叫求逆,钥匙不存在的情况叫不可逆(也叫奇异)。这门手艺在解方程组、机器学习的最小二乘法、图像变换里处处都用得上。这篇文章,就带你走进这间锁匠铺,学会三件事:逆矩阵是什么、怎么把它求出来、以及什么时候它根本不存在。

岗位关联

对 AI 从业者而言,判断一个矩阵是否可逆、能否快速求出逆矩阵,是解线性系统、实现最小二乘回归、理解神经网络反向传播的前提。把这块基础打牢,后续读矩阵分解、优化算法时会顺畅得多。

目录
  1. 可视化演示
  2. 逆矩阵定义
  3. 可逆条件
  4. 伴随矩阵法
  5. 初等变换法
  6. 逆矩阵性质
  7. 奇异矩阵应用
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

展示逆矩阵流程:矩阵A→求逆A⁻¹→验证I,四种求法Adj(伴随)/Row(初等行变换)/Det(行列式)/LU(分解),前提det≠0。

本节配有交互动效(进入视口后自动加载,约 3KB)。

逆矩阵核心概念 矩阵A→求逆A⁻¹→验证恒等矩阵I,四种求法:Adj(伴随矩阵法)→Row(初等行变换)→Det(行列式+Cramer)→LU(分解法) 可逆条件det(A)≠0,奇异矩阵(Sing)不可逆,逆矩阵用于解方程组Ax=b→x=A⁻¹b A⁻¹ = adj(A) / det(A), A·A⁻¹ = A⁻¹·A = I, det(A) ≠ 0

逆矩阵定义

还是那间锁匠铺。柜台上摆着一台机器,老板说:“这是什么都不做的机器,叫单位矩阵 I。”你喂给它任何一串密码,它原封不动地吐出来。现在,假定有一台打乱器 A,你发现还有另一台机器 B,两台机器串联起来:先过 A 再过 B,结果等于什么都没做;反过来先过 B 再过 A,也等于什么都没做。这时候,B 就是 A 的逆矩阵,记作 A⁻¹。

技术上的定义完全一致:对于 n 阶方阵 A,如果存在同阶方阵 B,使得

则称 A 可逆,B 是 A 的逆矩阵。注意这里的要求是双向的:先乱码后还原、先还原后乱码,都必须回到原样。这好比钥匙既能开锁也能锁上,两个方向都严丝合缝才行。

逆矩阵还有一个优雅的性质:如果它存在,就一定唯一。就像一把锁只配一把原厂钥匙,即使有仿制品,功能完全相同的也只有那一把。有了这个概念,下一步的问题自然是:什么样的锁才配得出钥匙?

AB=BA=IAB = BA = I
公式通俗说明:AB = I 表示“先做 A 的变换、再做 B 的变换,等于什么都没做”。逆矩阵就是变换的“撤销按钮”。
  1. 矩阵乘法顺序矩阵乘法表示变换的复合,右边的矩阵先作用。
    AB=A×BAB = A \times B
  2. 单位矩阵对角线全为 1、其余全为 0,乘任何矩阵都不改变它。
    I=(1001)I = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}
  3. 双向条件左乘右乘都要等于单位阵,少一个都不能算逆。
    AB=BA=IAB = BA = I

可逆条件

锁匠铺后墙上挂着一排锁,每把锁都标了一个数字——老板管它叫行列式,记作 det(A)。他说:“这个数字代表这台打乱器把面积放大了多少倍。”如果数字是 0,说明这台机器把整个平面压成了一条线:原来不同的两个点,经过它之后挤到了同一个点上。信息已经丢失,任何钥匙都救不回来。

数学上的判据非常干净:方阵 A 可逆,当且仅当

同时,可逆还等价于 A 的秩等于其阶数(满秩),即所有行、所有列都“独立有用”,没有哪一行是其他行的重复或组合。非满秩的方阵称为奇异矩阵,奇异矩阵没有逆。

判定条件到手,接下来就是动手配钥匙。配钥匙有两种主流手法:一种是照图纸精确复制,一种是请师傅手工调校。

det⁡(A)≠0\det(A) \neq 0
公式通俗说明:行列式是矩阵“压缩空间”的倍数。倍数为零意味着压缩到了低维,信息合并,无法还原。
  1. 方阵前提只有行数等于列数的矩阵才谈可逆,长方形矩阵没有逆矩阵。
    A∈Rn×nA \in \mathbb{R}^{n \times n}
  2. 行列式判据行列式非零是可逆的充要条件,一个条件同时管住“存在性”。
    det⁡(A)≠0  ⟺  A 可逆\det(A) \neq 0 \iff A \text{ 可逆}
  3. 满秩等价秩等于 n 意味着列向量线性无关,这是可逆的另一副面孔。
    rank(A)=n\mathrm{rank}(A) = n

伴随矩阵法

第一种配钥匙的办法,适合小锁(2×2 或 3×3 的矩阵)。老板拿出一张图纸,上面画满了小格子,每个格子里有一个数,这叫代数余子式。把每个位置的代数余子式都算出来,按原样排好,再转置一下,就得到伴随矩阵 adj(A)。最后,用整体行列式一除,钥匙就成了。

伴随矩阵法的公式是

这个公式把求逆问题拆成了三件事:算全部余子式、排成伴随阵、除以行列式。步骤固定、不易走弯路,但格子一多,计算量就直线上升,所以实际中主要用于小矩阵。

以 2×2 矩阵为例,伴随法还可以写成速记公式:主对角线互换、副对角线变号,再整体除以行列式。但锁匠师傅真正干活时,用的通常是另一种更省力的办法——初等变换法。

A−1=1det⁡(A) adj(A)A^{-1} = \frac{1}{\det(A)}\,\mathrm{adj}(A)
公式通俗说明:伴随矩阵像一张“零件清单”,行列式像“组装比例”。清单除以比例,就是精确的还原钥匙。
  1. 代数余子式删掉第 i 行第 j 列后剩下的行列式,再乘上符号因子。
    Cij=(−1)i+j MijC_{ij} = (-1)^{i+j}\,M_{ij}
  2. 伴随矩阵把所有代数余子式按位置排好,再做转置。
    adj(A)=(Cij)T\mathrm{adj}(A) = \left(C_{ij}\right)^{\mathsf{T}}
  3. 除以行列式行列式作分母,这就是为什么它不能为零。
    A−1=1det⁡(A) adj(A)A^{-1} = \frac{1}{\det(A)}\,\mathrm{adj}(A)

初等变换法

第二种配钥匙的方法,是师傅直接在机器上动手调校。他把原机器 A 和单位矩阵 I 并排拼成一张工作台 [A | I],然后只允许做三种操作:交换两个齿轮的位置、把某一行的齿轮整体放大缩小、把某一行按倍数加到另一行上。这三类操作叫作初等行变换,它们不会改变 A 的“可逆脾气”。

当师傅把左半部分一点一点调成单位矩阵 I 时,右半部分也跟着同步变化——奇迹发生了:右半部分恰好变成了 A⁻¹。整个过程写作

这个方法的妙处在于:左边 A 和右边 I 始终共享同一组行变换,就像一把钥匙坯和一把标准尺子同步打磨。左边磨成单位阵,右边就是答案。

初等变换法对 3×3 以上的矩阵尤其友好,计算机里解线性方程组用的高斯消元,本质就是这一套操作。钥匙配好之后,还得学会保养和识别——也就是逆矩阵的各种性质。

[A∣I]→初等行变换[I∣A−1][A \mid I] \xrightarrow{\text{初等行变换}} [I \mid A^{-1}]
公式通俗说明:把 A 拼上单位阵,对整行做相同操作,左边变成 I 时,右边就是 A⁻¹。这是计算机求解线性系统时真正的底层套路。
  1. 拼成增广矩阵把 A 和同阶单位阵横向拼接,组成 n×2n 矩阵。
    [A∣I][A \mid I]
  2. 行变换三种操作换行、倍乘行、行加法,统称初等行变换。
    Ri↔Rj,kRi,Ri+kRjR_i \leftrightarrow R_j,\quad kR_i,\quad R_i + kR_j
  3. 左边化为单位阵目标是把左侧 A 化简为 I,右侧同步得到逆。
    [I∣A−1][I \mid A^{-1}]

逆矩阵性质

配好的钥匙有哪些“脾气”?锁匠师傅总结了三条经验。第一条:两台打乱器串联,还原时要反着来——先穿外套,脱的时候就得先脱外套。写成公式就是 (AB)⁻¹ = B⁻¹A⁻¹。第二条:转置和求逆可以交换顺序,(Aᵀ)⁻¹ = (A⁻¹)ᵀ,就像钥匙的正反两面互不影响。第三条:行列式之间互为倒数,det(A⁻¹) = 1 / det(A)。

这些性质汇总如下

这些性质让复杂表达式的化简有了“捷径”:遇到 (ABC)⁻¹ 直接反序写 C⁻¹B⁻¹A⁻¹;遇到转置和逆嵌套,可以随意交换顺序而不改变结果。有了这些工具,最后回到一个最实际的问题:奇异矩阵在真实世界到底意味着什么?

(AB)−1=B−1A−1,(A−1)T=(AT)−1(AB)^{-1} = B^{-1}A^{-1}, \qquad (A^{-1})^{\mathsf{T}} = (A^{\mathsf{T}})^{-1}
det⁡(A−1)=1det⁡(A),(Ak)−1=(A−1)k\det(A^{-1}) = \frac{1}{\det(A)}, \qquad (A^{k})^{-1} = (A^{-1})^{k}
公式通俗说明:逆矩阵的性质本质上是“操作顺序的镜像”。先穿袜子再穿鞋,脱的时候先脱鞋再脱袜子——这就是反序法则的生活原型。
  1. 乘积反序验证 (AB)(B⁻¹A⁻¹) = I,中间的 BB⁻¹ 先抵消。
    (AB)−1=B−1A−1(AB)^{-1} = B^{-1}A^{-1}
  2. 转置与逆交换两边同时取转置,验证后可得。
    (AT)−1=(A−1)T(A^{\mathsf{T}})^{-1} = (A^{-1})^{\mathsf{T}}
  3. 行列式取倒数对 AA⁻¹ = I 两边取行列式。
    det⁡(A−1)=1det⁡(A)\det(A^{-1}) = \frac{1}{\det(A)}

奇异矩阵应用

回到机器学习的场景。训练一个线性回归模型,本质上是在解一个形如 Ax = b 的方程组。如果 A 可逆,答案一步到位:

这就是正规方程的最小二乘解:用逆矩阵这把钥匙,直接打开参数估计的大门。但如果特征之间高度相关,矩阵的行列式会趋近于零——锁芯锈死了。此时数值计算会变得极不稳定:微小扰动带来巨大误差,这种现象叫病态矩阵。工程上的标准做法是改用岭回归或伪逆,给主对角线加上一点“润滑油”,牺牲一点点偏差,换回稳定。

从保险箱到回归模型,“钥匙”的比喻始终成立:可逆,意味着信息完整,变换可以撤回;奇异,意味着信息压缩合并,只能接受近似解。理解逆矩阵,就是理解 AI 模型里那些“解方程”的时刻,到底在做什么。

x=A−1bx = A^{-1}b
公式通俗说明:x = A⁻¹b 是解方程组最直接的公式。当 A 接近奇异时,这个公式在数值上会“爆炸”,于是需要正则化兜底。
  1. 方程组矩阵形式把 n 个方程写成矩阵乘以未知数向量的形式。
    Ax=bAx = b
  2. 左乘逆矩阵两边同时左乘 A⁻¹,左边变成 x。
    x=A−1bx = A^{-1}b
  3. 病态分析det(A) 接近零时,A⁻¹ 的元素变得极大,误差被放大。
    det⁡(A)→0  ⟹  ∥A−1∥→∞\det(A) \to 0 \implies \|A^{-1}\| \to \infty

AI 应用场景

线性回归的正规方程

阶段:模型训练与参数估计

解决的问题:传统最小二乘需要解 XᵀXw = Xᵀy,直接求逆当特征高度相关时数值不稳定。AI 中常用岭回归给 XᵀX 加一个 λI,使其从“奇异锁”变成“可开锁”,再求逆得到稳定参数。

具体案例:某推荐系统有 200 个用户特征,直接算出 det(XᵀX) ≈ 0,模型参数抖动剧烈。工程师引入 0.01 的正则项后,矩阵可逆,参数平滑收敛,线上 CTR 提升 3%。

图像变换与还原

阶段:数据增强与预处理

解决的问题:图像旋转、缩放、平移在代码里都是矩阵乘法。想撤销一次旋转,就要乘上旋转矩阵的逆矩阵;如果变换矩阵奇异(例如缩放到 0),图像信息永久丢失。

具体案例:自动驾驶团队做数据增强时,把图片随机旋转后,需要用逆变换把标注框映射回原图坐标。工程师预计算了所有旋转矩阵的逆,推理速度提升 40%,且不丢失任何标注精度。

Python 演示

python55 行
def det(A):    """递归计算方阵的行列式"""    n = len(A)    if n == 1:        return A[0][0]    if n == 2:        return A[0][0] * A[1][1] - A[0][1] * A[1][0]    total = 0    for j in range(n):        sub = [row[:j] + row[j+1:] for row in A[1:]]        total += ((-1) ** j) * A[0][j] * det(sub)    return total  def adjugate(A):    """计算伴随矩阵 adj(A)"""    n = len(A)    co = [[0] * n for _ in range(n)]    for i in range(n):        for j in range(n):            sub = [row[:j] + row[j+1:] for row in (A[:i] + A[i+1:])]            co[i][j] = ((-1) ** (i + j)) * det(sub)    return [[co[j][i] for j in range(n)] for i in range(n)]  def inverse(A):    """用伴随矩阵法求逆,奇异矩阵抛出异常"""    d = det(A)    if abs(d) < 1e-12:        raise ValueError("矩阵不可逆: det = 0")    adj = adjugate(A)    n = len(A)    return [[adj[i][j] / d for j in range(n)] for i in range(n)]  if __name__ == "__main__":    A2 = [[4, 7], [2, 6]]    inv2 = inverse(A2)    print("2x2 逆矩阵:", inv2)     I2 = [[1, 0], [0, 1]]    prod = [[sum(A2[i][k] * inv2[k][j] for k in range(2)) for j in range(2)] for i in range(2)]    print("A * A^-1 =", prod)     A3 = [[1, 2, 3], [0, 1, 4], [5, 6, 0]]    inv3 = inverse(A3)    print("3x3 逆矩阵:")    for row in inv3:        print(row)     try:        singular = [[1, 2], [2, 4]]        inverse(singular)    except ValueError as e:        print("奇异矩阵测试:", e)
目的:从零实现伴随矩阵法求逆,不借助 NumPy,完整走一遍“行列式 → 代数余子式 → 伴随矩阵 → 除以行列式”的流程。
  1. det(A)递归计算行列式,n=2 时直接套交叉相减公式,n>2 时按第一行展开。
  2. adjugate(A)对每个位置删行删列求余子式,乘符号因子后转置,得到伴随矩阵。
  3. inverse(A)行列式接近 0 时抛异常,这是对“奇异矩阵无逆”的代码化表达。
  4. singular = [[1,2],[2,4]]第二行是第一行的 2 倍,det=0,程序正确报错。

常见误区

误区求逆时算出行列式不是 0,就直接用伴随矩阵法手算,结果算出来跟答案对不上,以为是公式记错了。

正解行列式非零只保证逆矩阵“存在”,并不保证手算不出错。伴随矩阵法的关键是先求代数余子式、再转置、最后除以行列式,三步里最容易漏掉“转置”。就像钥匙坯存在,但打磨时把齿纹刻反了,照样开不了锁。

为何常见:初学者记住了一个判据,便把判据当成了完整算法,忽略了算法内部的多个步骤。

误区看到 A⁻¹,觉得“大概就是把矩阵翻过来”,于是把转置 Aᵀ 当成逆矩阵直接用。

正解转置是沿主对角线翻折,逆矩阵是“撤销变换”,两者只在正交矩阵的特殊情况下恰好相等。普通矩阵的逆往往和转置长得完全不同。好比手套翻面不等于把手套恢复原状,翻面只是改变朝向。

为何常见:英文 inverse 和 transpose 都带“反过来”的意思,文字上的相似让初学者混淆。

误区觉得求逆可以像分配律一样拆开,直接写 (AB)⁻¹ = A⁻¹B⁻¹。

正解正确的反序法则要求 (AB)⁻¹ = B⁻¹A⁻¹。原因是矩阵乘法不交换:先穿袜再穿鞋,脱的时候必须反着来。如果按 A⁻¹B⁻¹ 的顺序乘回去,中间的 BB⁻¹ 凑不到一起,验证必然失败。

为何常见:乘法交换律在小数运算里太根深蒂固,导致矩阵乘法中“顺序敏感”反直觉。

误区把 [A | I] 拼好后,为了快点化成单位阵,行变换列变换混着用。

正解[A | I] 求逆只能用初等行变换,因为目标是让左侧的 A 变成 I,右侧同步记录“行操作的复合效果”。一旦混入列变换,左右两侧的同步关系就被破坏,结果不再是逆矩阵。好比配钥匙时只能磨钥匙,不能去改锁芯。

为何常见:行列变换都能用来求行列式,初学者把求行列式的经验迁移到了求逆上。

误区矩阵里有几行成比例,觉得“顶多是冗余,用计算机硬算应该能算出来”。

正解秩小于 n 的方阵行列式必为 0,逆矩阵在数学上严格不存在,比“不好算”更严重——是“根本算不出”。数值计算会直接报错或给出无意义结果。这就像已经被压成一条线的纸片,不可能靠任何运算还原成整张纸。

为何常见:直觉上以为“信息冗余”只是浪费,没意识到线性相关意味着空间维度的真正丢失。

面试题

Q1. 一个方阵 A 可逆的充要条件是( )

单选题 · easy

  • A.det(A) ≠ 0← 正确答案
  • B.A 的主对角线元素全不为 0
  • C.det(A) = 1
  • D.A 的所有元素都不为 0

答案:A。行列式非零与可逆互为充要条件。主对角线元素非零既不必要也不充分;det=1 是更强的要求,不是充要条件;元素全非零与可逆无关。好比钥匙坯存在与否,看的不是单个齿是否完好,而是整体能不能开锁。

Q2. 已知 A = [[a, b], [c, d]],且 ad − bc ≠ 0,则 A⁻¹ 为( )

单选题 · easy

  • A.[[d, −b], [−c, a]] / (ad − bc)← 正确答案
  • B.[[a, −b], [−c, d]] / (ad − bc)
  • C.[[d, b], [c, a]] / (ad − bc)
  • D.[[−d, b], [c, −a]] / (ad − bc)

答案:A。2×2 矩阵的逆有速记公式:主对角线互换、副对角线变号,再除以行列式 ad − bc。选项 B 把主对角线写错了,选项 C 漏了变号,选项 D 整体多乘了一个负号。验证方法很简单:用它乘 A,结果应等于单位阵。

Q3. 关于可逆矩阵 A 和 B,下列说法正确的有( )

多选题 · mid

  • A.(AB)⁻¹ = B⁻¹A⁻¹← 正确答案
  • B.(Aᵀ)⁻¹ = (A⁻¹)ᵀ← 正确答案
  • C.det(A⁻¹) = 1 / det(A)← 正确答案
  • D.A 的列向量线性相关

答案:ABC。乘积的逆要反序,转置和求逆可以交换顺序,行列式互为倒数,这三条都是逆矩阵的基本性质。D 错误:可逆矩阵的列向量必然线性无关,线性相关意味着秩不足,矩阵奇异。反序法则就像先穿袜再穿鞋,脱的时候必须反着来。

Q4. 设 A 是 3 阶方阵,下列哪个矩阵可能有逆矩阵( )

单选题 · mid

  • A.所有元素都是 0 的零矩阵
  • B.第一行等于第二行加第三行的矩阵
  • C.det(A) = 5 的矩阵← 正确答案
  • D.第二列全是 0 的矩阵

答案:C。det = 5 ≠ 0,满足可逆充要条件。零矩阵行列式为 0;行与行线性相关时秩下降,det = 0;存在全零列时同样不可逆。这三种情况都相当于机器把平面压成了低维物体,信息丢失。

Q5. 下列哪些条件等价于方阵 A 可逆( )

多选题 · mid

  • A.det(A) ≠ 0← 正确答案
  • B.rank(A) = n,其中 n 是 A 的阶数← 正确答案
  • C.A 经初等行变换可化为单位矩阵← 正确答案
  • D.齐次方程组 Ax = 0 只有零解← 正确答案

答案:ABCD。这四个条件都是可逆性的等价刻画。行列式非零、满秩、可化为单位阵、零空间只有零向量,说的是同一件事:变换不丢失任何维度。好比一把好锁的钥匙坯,从哪个角度看都能对上齿纹。

Q6. 已知 A = [[1, 2], [3, 4]],则 A⁻¹ 是( )

单选题 · mid

  • A.[[−2, 1], [1.5, −0.5]]← 正确答案
  • B.[[2, −1], [−1.5, 0.5]]
  • C.[[4, −2], [−3, 1]]
  • D.[[1, 2], [3, 4]]

答案:A。det = 1×4 − 2×3 = −2,按照速记公式得 A⁻¹ = [[4, −2], [−3, 1]] / (−2) = [[−2, 1], [1.5, −0.5]]。B 符号整体取反,C 没有除以行列式,D 直接拿原矩阵冒充逆矩阵。想快速验证,就把它乘回 A,看是否得到单位阵。

Q7. 用初等行变换求 A 的逆时,把 [A | I] 化简到( )即可读出答案

单选题 · hard

  • A.左侧变为上三角矩阵
  • B.右侧变为零矩阵
  • C.左侧变为行最简形
  • D.左侧变为单位矩阵← 正确答案

答案:D。行变换求逆的目标是让左侧的 A 变成 I,此时右侧同步变为 A⁻¹。只化成上三角或行最简形,说明消元没走完;右侧变为零矩阵说明操作彻底错误。好比钥匙要打磨到和锁芯完全贴合,接近但不等于,永远开不了门。

Q8. 设 A 是 n 阶方阵且可逆,下列等式正确的有( )

多选题 · hard

  • A.(A²)⁻¹ = (A⁻¹)²← 正确答案
  • B.det(A⁻¹) = (det A)⁻¹← 正确答案
  • C.(Aᵀ)⁻¹ = (A⁻¹)ᵀ← 正确答案
  • D.det(A) = 0

答案:ABC。幂的逆等于逆的幂,行列式互为倒数,转置与求逆可交换,这三条都成立。D 错误:可逆矩阵的行列式必须非零。注意 (A²)⁻¹ 也可以由反序法则推出,因为 A·A 的逆是 A⁻¹·A⁻¹。

Q9. 下列矩阵中可逆的是( )

单选题 · hard

  • A.A = [[1, 1, 1], [0, 1, 1], [0, 0, 1]]← 正确答案
  • B.B = [[1, 2, 3], [2, 4, 6], [0, 0, 1]]
  • C.C = [[0, 0, 0], [1, 2, 3], [4, 5, 6]]
  • D.D = [[1, 1, 1], [1, 1, 1], [1, 1, 1]]

答案:A。A 是上三角矩阵且主对角线全为 1,行列式为 1 × 1 × 1 = 1,可逆。B 的第二行等于第一行乘以 2,det = 0;C 有零行,det = 0;D 各行完全相同,det = 0。上三角矩阵的行列式等于主对角线乘积,这个性质能快速判断很多矩阵。

Q10. 已知 A = [[1, 0, 0], [0, 2, 0], [0, 0, 3]],则 A⁻¹ 为( )

单选题 · hard

  • A.[[1, 0, 0], [0, 0.5, 0], [0, 0, 1/3]]← 正确答案
  • B.[[1, 0, 0], [0, 2, 0], [0, 0, 3]]
  • C.[[1, 0, 0], [0, 0.5, 0], [0, 0, 0.5]]
  • D.[[0, 0, 1], [0, 2, 0], [3, 0, 0]]

答案:A。对角矩阵的逆就是把每个对角元素取倒数,所以 diag(1, 2, 3) 的逆是 diag(1, 1/2, 1/3)。B 是原矩阵本身,C 把第三项取错成 0.5,D 交换了行列位置。对角矩阵求逆就像一排独立的储物柜,每个柜子单独配一把钥匙。