🎯 本章学习目标
理解逆矩阵是「反着做的变换」:A⁻¹ 把 A 的效果撤销掉。
掌握可逆条件:det(A) ≠ 0。
会求逆:2×2 公式法,以及「增广矩阵高斯消元」通法。
会用逆矩阵解方程:Ax = b 的解是 x = A⁻¹b。
掌握伴随矩阵法与行变换法两种求逆,并能说出各自适用的场合。
会证明并运用 (AB)⁻¹ = B⁻¹A⁻¹,说出「反序」的几何直觉(先穿的后脱)。
本章目录
8.1 动机:把变换「反着做回去」
8.2 逆矩阵的定义
8.3 什么时候可逆:det ≠ 0
8.4 怎么求逆矩阵
8.5 用逆矩阵解方程
本章小结 · 自查 · 思考题
8.1 动机:把变换「反着做回去」
回忆矩阵 = 变换 = 动作。如果有一个动作把空间「横向拉伸 2 倍」,那么它的「反动作」就是「横向压缩到一半」。
把「拉伸 2 倍」的矩阵 [[2,0],[0,1]] 记为 A。它的反动作是「压缩一半」[[1/2,0],[0,1]],记为 A⁻¹。两者连着做,一个拉伸、一个压缩,效果互相抵消,等于「什么都没做」——也就是单位矩阵 I。
顺手用「面积缩放率」把逆矩阵看透:若 A 把面积放大 det(A) 倍,那么 A⁻¹ 就把面积放大 1/det(A) 倍——撤销动作连缩放率也要一并撤销。例:B = [[3,0],[0,2]] 把面积放大 3×2 = 6 倍,而 B⁻¹ = [[1/3,0],[0,1/2]] 把面积缩回 1/3 × 1/2 = 1/6——两个缩放率相乘恰好为 1,正是 det(B⁻¹) = 1/det(B) 的几何含义。第 7 章说过「行列式是缩放率」,本章的逆矩阵就是「缩放率的倒数」。
常见变换 矩阵 它的逆 几何含义
横向拉伸 2 倍 [[2,0],[0,1]] [[1/2,0],[0,1]] 压缩回一半
逆时针旋转 90° [[0,−1],[1,0]] [[0,1],[−1,0]] 顺时针旋回 90°(即旋转 −90°)
水平剪切 1 [[1,1],[0,1]] [[1,−1],[0,1]] 反向剪切抵消
单位矩阵(啥都不做) I I 不动,撤销也是不动
每行都可以用「乘出来等于 I」快速复核,例如旋转:[[0,−1],[1,0]]·[[0,1],[−1,0]] = [[1,0],[0,1]]。这四行还透露一个好消息:基本变换的逆都是基本变换 ——拉伸的逆是压缩、旋转的逆是反转、剪切的逆是反剪。复杂的变换由它们复合而成,于是逆矩阵也按「先穿的后脱」逐个撤销即可,不必另起炉灶。
日常软件里最贴身的逆矩阵是「撤销键」(Ctrl+Z)与「回放」:图形软件里把图形 A 用剪切变换 [[1,2],[0,1]] 推到新位置——点 (2,3) 变到 (1×2+2×3, 3) = (8,3);按一次撤销,就是左乘它的逆 [[1,−2],[0,1]],(8,3) 立刻弹回 (2,3)。变换的复合次序、撤销的反序,都由 (AB)⁻¹ = B⁻¹A⁻¹ 统一管理。把这一页记牢,8.2 节的反序律将不再是公式,而是你每天都在用的功能键。
逆矩阵是撤销动作
向量先被横向拉伸两倍,再被压缩一半,回到原状。
v
Av(拉长2倍)
A⁻¹(Av)=v(还原)
A 然后 A⁻¹ = 什么都没变 = I
图 8-1 先 A 拉伸、再 A⁻¹ 压缩,向量回到原处。A 与 A⁻¹ 是「互相撤销」的一对变换。
核心思想 逆矩阵 A⁻¹ 是变换 A 的「反变换」 :A 往前推一步,A⁻¹ 就把这一步撤回来。A 之后 A⁻¹,等价于没动(单位矩阵 I)。
深化一:「可撤销」的数学标准——一一对应
什么样的动作才有「撤销键」?标准只有四个字:不丢信息 ——每个输出都能唯一地找回它的输入,数学上叫一一对应 (既是满射又是单射)。拉伸、旋转、剪切都满足:空间没有塌缩,不同的点始终保持不同。投影不满足:一整条线上的点被压成同一个输出点,输出无法告诉你「输入是谁」。判断可逆,本质上就是检查一一对应;本章 8.3 节会用 det 给出一个 5 秒判据,但请先把这个「不丢信息」的标准立在脑子里——它是所有后续定理的魂。
撤销键还有个朴素性质:唯一 。假想有两个矩阵 B、C 都能撤销 A,那么 B = B·I = B(AC) = (BA)C = IC = C——只用了乘法结合律,两行推完,B 和 C 必是同一个矩阵。所以「A⁻¹」这个记号理直气壮:它不带任何歧义。(严格展开在 8.2。)
为什么要如此在意「撤销」?因为工程问题的一大半是「从结果反推原因」:从装配坐标反算零件坐标、从密文反推明文、从测量输出反解输入状态。这些问题能不能解、解得准不准,第一步就是问一句:这个变换可逆吗? ——问不好这一句,后面全白忙。
📐 例题 1 验证一对互逆变换(两个方向都要乘)
A = [[2,1],[1,1]],验证 B = [[1,−1],[−1,2]] 是它的逆矩阵,并说明 A 为什么必然可逆。
思路 按定义验证 AB = I 且 BA = I;顺带用行列式给「有资格可逆」发通行证。
解 先验资格:det(A) = 2×1 − 1×1 = 1 ≠ 0,A 没把平面压扁,可逆有戏。
AB = [[2,1],[1,1]]·[[1,−1],[−1,2]]:第一行 (2×1+1×(−1), 2×(−1)+1×2) = (1, 0),第二行 (1×1+1×(−1), 1×(−1)+1×2) = (0, 1)——得 I ✓
BA = [[1,−1],[−1,2]]·[[2,1],[1,1]]:第一行 (1×2+(−1)×1, 1×1+(−1)×1) = (1, 0),第二行 ((−1)×2+2×1, (−1)×1+2×1) = (0, 1)——也得 I ✓
两个方向都还原成 I,按定义 B 就是 A⁻¹。
答:A⁻¹ = [[1,−1],[−1,2]]。 ⚠ 易错点:乘法不可交换,AB、BA 要分别验证;好在方阵世界里证出一边 AB = I 就自动有 BA = I(8.2 说明),但初学阶段建议两边都亲手乘一次。
工程应用:成对出现的正反变换
工程软件里「变换 + 撤销」是成对注册的。CAD 内核中,零件的局部坐标 → 装配体全局坐标是一个正向变换 T,做干涉检查、求交点时又要从全局回到局部,调用的正是 T⁻¹。机器人学把「关节角 → 末端位姿」叫正运动学、「末端位姿 → 关节角」叫逆运动学——同一对概念的工程名字。还有数据编码:对测量数据做线性变换 E 后存储或传输,用时用 E⁻¹ 恢复——前提是 E 可逆,否则数据一去不返。
辨析:A⁻¹ 不是「A 的负一次方」
A⁻¹ 是一个整体记号,读作「A 的逆(矩阵)」,严格指满足 AA⁻¹ = A⁻¹A = I 的那个矩阵,不是「A 的 −1 次幂」这种可以随意参与运算的缩写。矩阵世界没有除法 :看到「B/A」要立刻警觉它没有定义,只有 AB⁻¹(先撤销 A,再做 B)或 B⁻¹A(先做 B,再撤销 A)两种可能,顺序不同、含义不同。数字世界的直觉(除以 A = 乘以 A⁻¹)只保留一半:乘逆可以,但乘的位置必须拿对 。
8.2 逆矩阵的定义
形式化地说:
定义 方阵 A 若存在方阵 B,使得 AB = BA = I ,则称 A 可逆 ,B 是 A 的逆矩阵 ,记作 B = A⁻¹。
注意两个「双向」:AB = I 且 BA = I。因为「先 A 后 A⁻¹」和「先 A⁻¹ 后 A」都必须回到原状。幸好数学上可以证明,方阵只要 AB=I,就自动有 BA=I,所以实际验证时看一边就够了。
类比:数字里的「倒数」。3 × (1/3) = 1,1/3 是 3 的倒数;矩阵里的「逆」,A × A⁻¹ = I。只是矩阵没有「除法」,所以用「乘以逆矩阵」来替代「除以」。
一个常被忽略的追问:为什么定义偏要写成 AB = BA = I 两个等式?对方阵 而言可以证明「一边成立则另一边自动成立」,但定义写全两条是为了把「双向撤销」的语义说清楚:先 A 后 A⁻¹ 是「做完再撤销」,先 A⁻¹ 后 A 是「还没做就撤销」——两种次序都必须回到原状,才配叫「反动作」。将来遇到非方阵(没有标准逆)或多对一变换(没有右逆)时,正是这两个方向的差别暴露了问题;现在把定义记全,是给后面的辨析预埋伏笔。
补一条方阵世界的「免费福利」:单位矩阵 I 和任何同阶方阵交换(AI = IA = A),I 的逆就是 I 自己。更妙的是,可逆矩阵的逆也唯一——若 B、C 都是 A 的逆,则 B = BI = B(AC) = (BA)C = IC = C,一路只用结合律与定义,两行就证完。唯一性保证了记号 A⁻¹ 名副其实:它不是「某个逆」,而是「那个逆」,我们才能放心把它当作一个确定的对象参与运算与证明。
🧠 一句话记忆 逆矩阵 = 矩阵版的「倒数」,但必须是方阵,且 det ≠ 0。
深化一:方阵世界「单边即双边」——用第 7 章的钥匙开锁
定义要求 AB = BA = I「双向」,验证起来似乎要干两遍活。好消息:方阵世界里,只要 AB = I,BA = I 自动成立。证明思路只动用第 7 章的乘法性质——对 AB = I 两边取行列式:det(A)·det(B) = det(I) = 1。左边能等于 1,说明 det(A) ≠ 0——A 没压扁空间。而 det(A) ≠ 0 时逆矩阵确实存在(8.4 给出两种构造方法),把这个真正的逆记作 C,则 B = (CA)B = C(AB) = C·I = C,于是 BA = CA = I。证毕。第 7 章「det(AB) = det(A)det(B)」在这里直接当了工具 ——上一章埋的伏笔,本章立刻兑现。
顺带把唯一性正式写全:若 B、C 都是 A 的逆,则 B = B·I = B(AC) = (BA)C = I·C = C。整个证明没算一个数字,只用了结合律 和 I 的定义——矩阵乘法没有交换律,但结合律永远可靠;线性代数的很多「神证明」,本事都在于「把乘法往正确的方向结合」。
深化二:逆的运算性质清单
逆矩阵常用运算性质(每条都可用「验证乘积 = I」两三步推出)
性质 一句话依据
(A⁻¹)⁻¹ = A 「撤销的撤销」就是原动作本身
(AB)⁻¹ = B⁻¹A⁻¹ 复合的撤销必须反序 (先做的后撤)
(Aᵀ)⁻¹ = (A⁻¹)ᵀ 转置把乘法顺序反过来,恰好与逆的「反序」对齐
(kA)⁻¹ = (1/k)A⁻¹(k ≠ 0) 整体放大 k 倍的逆,就是整体缩小到 1/k
det(A⁻¹) = 1/det(A) A 把体积放大 det(A) 倍,撤销就得缩小回来——缩放率取倒数
特别建议给 det(A⁻¹) = 1/det(A) 做一次数值体检:例题 1 中 A=[[2,1],[1,1]] 的 det = 1,其逆 [[1,−1],[−1,2]] 的 det = 1×2 − (−1)×(−1) = 1——1/1 = 1 ✓。行列式的世界与逆的世界在这里完全咬合。
📐 例题 2 (AB)⁻¹ = B⁻¹A⁻¹:证明并数值验证
A = [[1,1],[0,1]](剪切),B = [[2,0],[0,1]](横向拉伸 2 倍)。求 AB 与 (AB)⁻¹,再用 B⁻¹A⁻¹ 复核。
思路 先按「复合 = 先 B 后 A」算出 AB;逆矩阵分别用二阶公式求;最后验证 (AB)·(B⁻¹A⁻¹) = I。
解 AB = [[1,1],[0,1]]·[[2,0],[0,1]] = [[2,1],[0,1]](先拉伸再剪切的复合动作)。
det(AB) = 2×1 − 1×0 = 2 ≠ 0。(AB)⁻¹ = (1/2)·[[1,−1],[0,2]] = [[1/2, −1/2],[0, 1]]。
另一条路:A⁻¹ = [[1,−1],[0,1]](剪回去,注意剪切撤销仍是剪切、只差符号),B⁻¹ = [[1/2,0],[0,1]](压回去)。
B⁻¹A⁻¹ = [[1/2,0],[0,1]]·[[1,−1],[0,1]] = [[1/2, −1/2],[0, 1]]——与 (AB)⁻¹ 完全一致 ✓
证明 (AB)(B⁻¹A⁻¹) = A(BB⁻¹)A⁻¹ = A·I·A⁻¹ = AA⁻¹ = I。全程只用了结合律,先里后外,一步不虚。
反例警示:A⁻¹B⁻¹ = [[1,−1],[0,1]]·[[1/2,0],[0,1]] = [[1/2, −1],[0,1]]——顺序写反,答案立刻不同!
答:(AB)⁻¹ = B⁻¹A⁻¹ = [[1/2, −1/2],[0, 1]];顺序反了就错。 ⚠ 易错点:「先做的后撤销」——复合里晚出场的 B,在撤销时先出场;这一正一反的镜像次序是复合与撤销的全部关系。
工程与直观:变换链的撤销
「先穿袜子后穿鞋,脱的时候先脱鞋」——次序反转不是比喻,是定理。CAD 与图形学里一条模型变换链 T = T₅·T₄·T₃·T₂·T₁(缩放、旋转、平移层层嵌套,越靠右越先作用),要撤销整条链必须 T₁⁻¹·T₂⁻¹·…·T₅⁻¹。机械臂的连杆变换、相机的内外参、动画的骨骼层级,动辄几十个矩阵相乘——逆链必须严格倒序,写错一个次序,模型瞬间「原地爆炸」。工程师调试这类 bug 时,十有八九是次序问题。
8.3 什么时候可逆:det ≠ 0
不是每个矩阵都有逆。什么时候没有?回到几何:
如果变换把空间压扁 了(det=0),信息就丢失了——平面被压成一条线,线上一个点对应原来一整个方向的点,无法还原 。
如果变换没压扁 (det≠0),每个点都有唯一去向,也能唯一地找回来,可以还原 。
可逆判定 A 可逆 ⇔ det(A) ≠ 0 ⇔ A 的列线性无关 ⇔ 变换没压扁空间。 这四个说法是一回事,务必记牢。
四条判据为什么是「一回事」?串起两条链路就能看清:其一,det ≠ 0 ⇒ 压缩率为非零常数,空间维度不丢 ⇒ 列线性无关 ⇒ 没压扁;反过来任一列能被其余列表出 ⇒ 输入的不同方向被叠成同一输出 ⇒ 压扁 ⇒ det = 0。其二,det 是一个数,检查它只要一次乘加展开;检查「列线性无关」原则上要验证所有组合。所以工程与考试都爱用 det 当最快的体检指标 :一个数定生死,这正是行列式从第 7 章一路铺垫到这里的 payoff。
数值上还要当心「临界地带」:det ≠ 0 只保证「能算」,不保证「算得稳」。取 A = [[1, 0.999],[0.999, 1]],det = 1 − 0.998001 = 0.001999 ≠ 0,理论上可逆;但 A⁻¹ 的元素高达 1/0.001999 ≈ 500——输入端一丝风吹草动(比如某测量值从 0.999 变到 0.9991),输出端就可能翻江倒海。工程上把这类「det 很小、逆很大」的矩阵叫病态矩阵 ,说它「可逆」是真的,「敢用」是另一回事——这正是第 7 章病态警告在逆矩阵身上的续集:判据是定性的一刀切,数值是定量的连续谱,中间隔着一个工程判断。
这也和第 7 章无缝衔接:行列式非零,就是「可逆」的入场券 。
六位一体:可逆条件的完整汇总表
「det ≠ 0」只是入口。下面这张表把方阵世界里彼此等价的六种说法一列排开——它们是同一件事的六种语言 ,可以在任意两种之间互推:
可逆条件的六重等价表述(方阵 A,n 阶)
表述 所属语言 一句话依据
A 可逆(存在 A⁻¹) 代数 存在撤销变换
det(A) ≠ 0 代数 体积缩放率非零,空间没被压扁
A 的列线性无关(满秩) 几何 n 个列撑起 n 维空间,信息一个不少
Ax = 0 只有零解 方程 没有非零向量被压到原点
Ax = b 对任意 b 有唯一解 方程 每个目标都可达,且路线唯一
A 可写成初等矩阵的乘积 结构 A 能拆成一串「小撤销」的复合
怎么用这张表 拿到一个矩阵问题,先判断自己手里的是哪种语言(算出的是 det?观察到的是几何?写出的是方程组?),再沿表切换到最顺手的那一行。第 9 章会为这张表再添一位成员:rank(A) = n(满秩) ,它把「几重等价」升级成「秩」这把万能刻度尺。
深化一:不可逆 = 信息丢失(投影的现场)
把 P = [[1,0],[0,0]] 施加在平面上:P(1, 0.5) = (1, 0),P(1, 0.7) = (1, 0)——两个不同的输入,输出一模一样。加密这种「多对一」,撤销就无从谈起:拿到 (1, 0),你无法知道它来自哪条竖线上的点。不可逆的数学名字,叫信息丢失。 det = 0 正是「发生了多对一压扁」的代数警报。
再补一个对称的视角:可逆要求变换「到得全」(满射:每个 b 都是某个 x 的像)且「不重叠」(单射:不同 x 像不同)。det ≠ 0 时这两个条件自动同时成立;det = 0 时自动同时破产——要么有些 b 永远够不着(例如压成线后,线外的 b 没有原像),要么有些 b 原像成堆(线上的 b 对应一整条原像)。到不全、重叠了,两个警报一起响 ,这就是 det = 0。
📐 例题 3 投影不可逆:行列式的反证法
P = [[1,0],[0,0]](投影到 x 轴)。证明:不存在任何矩阵 B 能使 PB = I。
思路 反证。假设 B 存在,用第 7 章 det(AB) = det(A)det(B) 推矛盾。
解 假设 PB = I。两边取行列式:det(P)·det(B) = det(I) = 1。但 det(P) = 1×0 − 0×0 = 0,左边恒等于 0,得到 0 = 1,矛盾。假设不成立,B 不存在。
几何复核:P 把整条竖线 x=1 上的点全部送到 (1,0),输出一样、输入不同——信息在投影瞬间丢失,「撤销」无从定义。
答:P 不可逆。 ⚠ 易错点:不可逆 ≠ 没用处——投影本身极其有用(三视图、求影子),只是「有去无回」;判断可逆与评价用途是两码事。
工程应用:投影是工程图的宿命
三视图、剖面图、屏幕渲染,全是投影——三维到二维,深度信息必然丢失(背面的结构看不见)。工程图学教我们用多个视图互相补充来「重建」三维:单个投影不可逆,但不同方向的投影组合起来能约束出完整形状 ——这正是摄影测量与三维重建的原理,本质上是「用多个不可逆变换的组合,逼近一个可逆的信息量」。反过来提醒:凡是需要「从结果唯一回到原因」的设计(编码、标定、控制指令下发),设计者都必须保证变换矩阵 det ≠ 0。
辨析:非方阵没有「标准逆」
可逆是方阵俱乐部的专属福利。3×2 矩阵把二维送进三维:所有输出都挤在三维空间的一张平面上,三维的绝大多数点永远够不着——「到不全」;2×3 矩阵把三维压进二维:必然「重叠」。两边都不满足一一对应,所以非方阵谈不上标准逆。好在数学家准备了推广——伪逆 (在最小二乘意义下「最佳的近似撤销」),它是数据拟合、参数辨识的主力工具,进阶篇再会。初学阶段记住边界:谈 A⁻¹,先检查 A 是不是方阵。
📦 数学史小注:矩阵加密的开山之作
1929 年,数学家希尔(Lester Hill)发表了以矩阵为核心的加密方案——希尔密码:把明文按固定长度切成向量,逐段左乘一个密钥矩阵 K 得到密文;收件方用 K⁻¹ 左乘密文即还原明文。它比同时代的字母替换密码强得多的原因,恰是本章主题:矩阵把「逐字母替换」升级成了「整组字母混合」。
而它对密钥矩阵的铁律也来自本章:K 必须可逆 (det ≠ 0),否则不同明文会被压到同一密文,解密彻底失败。历史有点遗憾——希尔密码后来被密码分析攻破(线性结构本身是弱点),但「可逆变换做加密、逆变换做解密」的思想沿用至今,是理解现代编码与纠错的一把钥匙。
8.4 怎么求逆矩阵
方法一:2×2 公式(快捷)
对二阶矩阵 A=[[a,b],[c,d]],当 ad−bc≠0 时:
A⁻¹ = (1 / (ad−bc)) · [[d, −b], [−c, a]]
记忆口诀:主对角对调,副对角变号,再除以行列式 。
📐 例题 4 口诀 10 秒验证(二阶)
A = [[3,1],[2,1]],用口诀直接写出 A⁻¹,并验算。
思路 det = 3×1 − 1×2 = 1;主对角对调得 [[1,1],[2,3]],副对角变号得 [[1,−1],[−2,3]],det=1 免除。
解 A⁻¹ = [[1,−1],[−2,3]]。验算 AA⁻¹:第 (1,1) 元 3×1 + 1×(−2) = 1 ✓;第 (1,2) 元 3×(−1) + 1×3 = 0 ✓;第 (2,1) 元 2×1 + 1×(−2) = 0 ✓;第 (2,2) 元 2×(−1) + 1×3 = 1 ✓——单位矩阵。
答:A⁻¹ = [[1,−1],[−2,3]]。 ⚠ 易错点:分子矩阵「对调 + 变号」要一步到位,最容易错在把 b、c 也换了位——其实 b、c 原地不动只变号,换位的只有 a、d;验算四个位置是永远的保险。
二阶逆矩阵公式
二阶逆矩阵等于行列式分之一,乘以主对角对调、副对角变号的矩阵。
a
b
c
d
A⁻¹ =
1
ad−bc
·
d
−b
−c
a
图 8-2 二阶逆矩阵公式:主对角线对调、副对角线变号、整体除以行列式。
深化:二阶公式从哪来——伴随矩阵法
「主对角对调、副对角变号、除以行列式」不是口诀魔法,它是一般方法 伴随矩阵法 的 2×2 特例。定义:把每个位置的代数余子式算出来,摆成一张表,再转置 ,得到 A 的伴随矩阵,记作 adj(A)。于是:
A⁻¹ = adj(A) / det(A)
为什么除以 det(A)?因为第 7 章的两条展开定理在这里会师:用自己所在行的余子式展开 = det(A);用别的行的余子式展开 = 0 。把这两条合起来算矩阵乘积 A·adj(A),每个对角元恰好是「本行×本行余子式」= det(A),非对角元全是「本行×别行余子式」= 0——一乘出来整张表就是 det(A)·I。两边除以 det(A),逆矩阵当场现形。二阶情形里 adj(A) 恰好是「对调加变号」,口诀由此而来。
📐 例题 5 伴随矩阵法求三阶逆(含验证)
A = [[1,2,3],[0,1,4],[5,6,0]],用伴随矩阵法求 A⁻¹,并验证 AA⁻¹ = I。
思路 三步走:先算 det(它既是资格证,也是最后的除数);再算九个代数余子式;转置拼成 adj(A),除以 det。
解 det(A) = 1×(1×0−4×6) − 2×(0×0−4×5) + 3×(0×6−1×5) = −24 + 40 − 15 = 1。
九个代数余子式(符号按棋盘 (−1)^(i+j),划掉所在行、列算二阶):A₁₁ = −24,A₁₂ = 20,A₁₃ = −5,A₂₁ = 18,A₂₂ = −15,A₂₃ = 4,A₃₁ = 5,A₃₂ = −4,A₃₃ = 1。
转置拼装:adj(A) = [[−24, 18, 5],[20, −15, −4],[−5, 4, 1]](A₂₁ 摆到第 1 行第 2 列——转置的位置最容易出错)。
A⁻¹ = adj(A)/det(A) = [[−24, 18, 5],[20, −15, −4],[−5, 4, 1]](det=1,免除法)。
验证:算 AA⁻¹ 的第 (1,1) 元 = 1×(−24) + 2×20 + 3×(−5) = −24 + 40 − 15 = 1 ✓;第 (1,2) 元 = 1×18 + 2×(−15) + 3×4 = 18 − 30 + 12 = 0 ✓;第 (2,1) 元 = 0×(−24) + 1×20 + 4×(−5) = 0 ✓……逐个乘下去,九个位置恰好拼出单位矩阵。
答:A⁻¹ = [[−24, 18, 5],[20, −15, −4],[−5, 4, 1]]。 ⚠ 易错点:余子式算完必须转置再摆放(把 A₁₂ 放到第 2 行第 1 列就全错);det=1 是本题特意的巧合,一般情形千万别忘了除以 det。
方法二:增广矩阵高斯消元(通法)
对任意 n 阶矩阵,通用做法是:把 A 和单位矩阵 I 并排写成增广矩阵 [A | I],然后只做行变换 ,把左边变成 I。此时右边就会自动变成 A⁻¹:
[A | I] —行变换—→ [I | A⁻¹]
为什么有效?因为「对 A 做一串行变换变成 I」等价于「左乘一串初等矩阵变成 I」,这串矩阵的乘积恰好就是 A⁻¹;把它同样作用在右边的 I 上,就得到了 A⁻¹ 本身。这正是高斯消元的又一妙用。
增广矩阵行变换求逆
增广矩阵左半是A右半是I,经过只做行变换,左半变成I,右半自动变成A的逆。
A
|
I
出发:[A | I]
只做行变换
(消元→归一→回代)
I
|
A⁻¹
终点:[I | A⁻¹]
左半边每变一步,
右半边同步记账——
左半到 I 时,右半
恰好记完所有撤销。
图 8-3 增广矩阵求逆:对 [A | I] 只做行变换,左半变成 I 的那一刻,右半就是 A⁻¹——「右边同步记录了每一步撤销动作」。
📐 例题 6 行变换法求三阶逆(通法实战)
A = [[2,1,1],[1,1,1],[1,1,3]],用 [A | I] 行变换求 A⁻¹,并验证。
思路 增广后只做行变换,左边消出单位矩阵;为避免过早出现分数,先用「2×某行 − 1×某行」这类整数组合。
解 出发:[A | I],三行分别是 (2,1,1 | 1,0,0)、(1,1,1 | 0,1,0)、(1,1,3 | 0,0,1)。
消第 1 列:r₂ ← 2r₂ − r₁ 得 (0,1,1 | −1,2,0);r₃ ← 2r₃ − r₁ 得 (0,1,5 | −1,0,2)。
消第 2 列:r₁ ← r₁ − r₂ 得 (2,0,0 | 2,−2,0);r₃ ← r₃ − r₂ 得 (0,0,4 | 0,−2,2)。
消第 3 列并归一:r₁/2 得 (1,0,0 | 1,−1,0);r₃/4 得 (0,0,1 | 0,−1/2,1/2);r₂ ← r₂ − r₃ 得 (0,1,0 | −1,5/2,−1/2)。
左边已是 I,右边读出 A⁻¹ = [[1, −1, 0],[−1, 5/2, −1/2],[0, −1/2, 1/2]]。
验证:det(A) = 2×(1×3−1×1) − 1×(1×3−1×1) + 1×(1×1−1×1) = 4 − 2 + 0 = 2,而 A⁻¹ 各分量的分母恰是 2,与伴随矩阵法的结果一致(两种方法殊途同归)。
答:A⁻¹ = [[1,−1,0],[−1,5/2,−1/2],[0,−1/2,1/2]]。 ⚠ 易错点:只许行 变换、不许列变换(列变换破坏「右边记录撤销」的对应关系);每一步左右两半必须同步操作。
深化:行变换法的本质——左乘一串初等矩阵 。回看例题 6 的每一步:把某行乘 k、把某行加到另一行,都等价于在左边乘上一个「初等矩阵」。若一串行变换把 A 变成 I,记作 E_k⋯E₁A = I,那么两边右… 不对——两边同时看,A⁻¹ = E_k⋯E₁;而这串乘积作用在 I 上就是它自己,所以右半边从 I 出发一路被同步乘成 E_k⋯E₁ = A⁻¹。「右边在记账」的直觉由此获得严格版本:右半边记录的正是这串初等矩阵的连乘 。这也解释了为什么只许行变换——列变换对应右乘,右乘的乘积不等于 A⁻¹(它只能给出 A 的「右逆」的碎片),账就记错了。
🧠 一句话记忆 求逆 = 把 [A | I] 用行变换「左半边变 I」,右半边就是逆。
工程应用:求逆很贵——「要 A⁻¹b,就别真求逆」
求逆的算力账要算清楚:n 阶矩阵求逆的运算量约为「解一次方程组」的三倍,还需要额外内存存放结果。所以工程守则是:如果最终只用到 A⁻¹b,就不要把 A⁻¹ 显式算出来 ——直接解 Ax = b 得到同样的 x,成本只有三分之一;要连续算 A⁻¹b₁、A⁻¹b₂、…,就把消元过程做一次、保存成 LU 分解,之后每来一个新 b 只做一次「回代」,越用越划算。大型有限元软件从不显式求刚度矩阵的逆,字典里只有「分解」和「回代」。逆矩阵的价值在概念与理论 ,而不是逐元素计算。
辨析:三种求逆方法,各就各位
方法选择有个朴素的对应表:二阶手算 → 公式(口诀最快);三阶且元素整齐 → 伴随法(det=±1 时尤其干净,例题 4 那样);高阶、数值计算 → 行变换(LU 分解,机器的标配)。要害在成本:伴随法要算 n² 个(n−1)阶行列式 ,n=10 就是 100 个九阶行列式,每个又有 36 万多项展开——理论价值很高(推公式、证明定理),计算价值断崖式下跌。别嫌某个方法「笨」,也别迷信某个方法「万能」:场合决定工具。
8.5 用逆矩阵解方程
逆矩阵最实用的地方,是解线性方程组。把方程组写成矩阵形式:
Ax = b
其中 A 是系数矩阵,x 是未知数向量,b 是常数向量。如果 A 可逆,两边左乘 A⁻¹ :
A⁻¹Ax = A⁻¹b ⇒ Ix = A⁻¹b ⇒ x = A⁻¹b
一步得到唯一解!
核心结论 若 A 可逆,则 Ax=b 有唯一解 x = A⁻¹b。 这也解释了为什么「det≠0」时方程组有唯一解——A 可逆,解就能唯一地「乘逆」出来。
「唯一解」还有一条常被忽略的平行通道:齐次方程组 Ax = 0 。若 A 可逆,两边左乘 A⁻¹ 立得 x = 0——零向量是唯一解;反过来,Ax = 0 若只有零解,任何 Ax = b 的两个解相减就得零解,从而两解相等,唯一。于是又多一条等价表述:「A 可逆 ⇔ Ax = 0 只有零解」,与「det ≠ 0」「列线性无关」「没压扁」并列成第五条判据。用例题 6 的矩阵试:A = [[2,1,1],[1,1,1],[1,1,3]],det = 2 ≠ 0,齐次方程消到底只剩 x = (0,0,0)——数值上立即复核。齐次视角的价值在第九章会再次升级:它把「解的存在与个数」变成「列把谁张出来」的几何问题。
辨析:逆矩阵 ≠ 每个元素取倒数 。矩阵没有「逐元素的除法」,把 [[2,1],[1,1]] 每个元素取倒数得到 [[1/2,1],[1,1]],乘回去验证:[[2,1],[1,1]]·[[1/2,1],[1,1]] = [[2,3],[3/2,2]],与 I 相去甚远。真正的逆是 [[1,−1],[−1,2]]——它把变换作为一个整体撤销,而不是把 16 个(n² 个)数字各自孤立地「翻转」。矩阵的逆是动作级 的概念,不是元素级的概念;分辨这两者,是初学者与熟练者的分水岭之一。
举个第 6 章的例子:A=[[2,1],[1,−1]],b=(4,1)。det(A)=2·(−1)−1·1=−3≠0,可逆。
A⁻¹ = (1/−3)·[[−1,−1],[−1,2]] = [[1/3,1/3],[1/3,−2/3]]
x = A⁻¹b = (5/3, 2/3)
结果与第 6 章完全一致。两种方法(高斯消元、逆矩阵)殊途同归。
方法 一句话思路 成本量级 适用场合
高斯消元 把方程组消成上三角,再回代 基准(最便宜) 解一两个方程组的首选,数值稳定
逆矩阵 先花大代价算出 A⁻¹,再 x = A⁻¹b 约为消元的 3 倍 理论推导、同一个 A 反复使用时
LU 分解 消一次存档(L、U),之后只做回代 一次贵,后续每次极廉 同一 A、成百上千个 b(工程标配)
克莱姆法则 xⱼ = det(Aⱼ)/det(A),行列式直接写答案 要算 n+1 个行列式(高) 二、三阶手算、理论显式表达
这张表回答一个要害问题:「能解」与「该用哪个解」是两回事 。四种方法在可逆时给出的都是同一个 x——殊途同归说的是答案 ;但它们的代价结构 完全不同,工程里选的是代价,不是答案。
不过要提醒:实际计算中,解方程用高斯消元通常更快更稳 ;逆矩阵的价值更多在于理论 ——它让我们一眼看穿「解是否存在、是否唯一」。
深化一:「左乘」的讲究与「可逆 ≠ 万能」
从 Ax = b 到 x = A⁻¹b,A⁻¹ 只能乘在左边 (结合律保证 A⁻¹(Ax) = (A⁻¹A)x)。把 bA⁻¹ 写出来不仅含义错,连维度都对不上(1×2 行向量乘 2×2 也许维度碰巧能算,但含义已是另一回事)——矩阵世界「乘在哪边」本身就是语义的一部分。
更重要的边界:逆矩阵是「唯一解」情形的专用钥匙。A 可逆 ⇒ Ax = b 对任何 b 都有唯一解 ;但 A 不可逆时,方程组并非一律无解——当 b 恰好落在 A 的列空间里时,方程组有解,而且有无穷多个(一整族解)。「无解 / 唯一 / 无穷多」三分类的完整判据要用第 9 章的秩来补全。用错钥匙不是钥匙的错:拿逆矩阵去处理不可逆的问题,才会闹出「无解硬求解」的笑话。
📐 例题 7 逆矩阵解三阶方程组(含回代验证)
用逆矩阵解方程组:2x + y + z = 4;x + y + z = 3;x + y + 3z = 5。
思路 写成 Ax = b,发现 A 正是例题 6 的矩阵——逆矩阵已经算好,直接 x = A⁻¹b。
解 A = [[2,1,1],[1,1,1],[1,1,3]],b = (4,3,5)。
x 分量 = 1×4 + (−1)×3 + 0×5 = 1
y 分量 = (−1)×4 + (5/2)×3 + (−1/2)×5 = −4 + 7.5 − 2.5 = 1
z 分量 = 0×4 + (−1/2)×3 + (1/2)×5 = 1
回代验证:2+1+1 = 4 ✓;1+1+1 = 3 ✓;1+1+3 = 5 ✓——三个方程全部命中。
答:x = (1, 1, 1)。 ⚠ 易错点:A⁻¹b 的计算是「A⁻¹ 的行去点乘 b」,用错列必翻车;回代验证 30 秒搞定,永远别省这一步。
扩展:克莱姆法则——行列式直接给出答案
行列式还能把解写成「现成的分数」:把 A 的第 j 列换成 b,得矩阵 Aⱼ,则 xⱼ = det(Aⱼ)/det(A)。这就是克莱姆法则 (Cramer's rule)。用章内那个二阶例子试验:A = [[2,1],[1,−1]],det = −3;x = det[[4,1],[1,−1]]/(−3) = (−5)/(−3) = 5/3;y = det[[2,4],[1,1]]/(−3) = (−2)/(−3) = 2/3——与正文结果完全一致。克莱姆法则理论上漂亮(它把「解」与「行列式」直接挂钩),实用上低效(要算 n+1 个 n 阶行列式),但它常在考试与推导里客串,认识一下很有必要。
工程应用:同一架结构,一百种载荷
结构仿真里,刚度矩阵 A 常常几十万阶,而载荷工况 b 却有成百上千种(不同的载重配置、不同的气动载荷分布)。高效流程是:把 A 分解一次 (LU 分解,成本大头),之后每种工况只做一次轻量回代得到各自的 x——「一次投资、反复收益」。这正是「求逆 / 分解」在工程中的真实用法:不是每次从零来一遍,而是把最贵的步骤摊销到所有工况上。
辨析:三问分离——存在、唯一、怎么解
初学者最常把三个问题搅在一起:解存在吗? (b 在不在列空间里——第 9 章秩的判据)解唯一吗? (列是否独立——本章 det 的判据)怎么算? (高斯消元、分解、还是逆矩阵——算法效率问题)。三问各有各的工具,答非所问是常见病:被问「这个方程组有没有解」,回答「我会高斯消元」,等于被问「体检指标正常吗」时回答「我会用血压计」。从本章起,遇到任何方程组问题,先在心里把三问排开,再挑对应的工具。
本章小结
逆矩阵 A⁻¹ 是变换 A 的「反变换」 ,满足 AA⁻¹ = A⁻¹A = I。
A 可逆 ⇔ det(A) ≠ 0 ⇔ 列线性无关 ⇔ 空间没被压扁 。
二阶求逆公式:主对角对调、副对角变号、除以行列式 。
通法求逆:[A | I] 行变换成 [I | A⁻¹] 。
可逆时,Ax=b 的唯一解是 x = A⁻¹b 。
伴随矩阵法 :A⁻¹ = adj(A)/det(A),adj 是代数余子式矩阵的转置;二阶口诀是它的特例。
运算恒等式 :(AB)⁻¹ = B⁻¹A⁻¹(反序)、det(A⁻¹) = 1/det(A)、(Aᵀ)⁻¹ = (A⁻¹)ᵀ。
工程守则 :只要 A⁻¹b 就去解方程(或做 LU 分解),别显式求逆——求逆贵三倍,还不稳。
齐次判据 :A 可逆 ⇔ Ax = 0 只有零解 ⇔ Ax = b 对任何 b 有唯一解。
病态警报 :det 很小 ⇒ 逆很大 ⇒ 数值不稳;「可逆」与「好用」之间还隔着工程判断。
读完本章,你应该能……
用「撤销动作」解释逆矩阵的含义。
判断 det(A)=0 的矩阵为什么不可逆。
求 [[2,1],[1,−1]] 的逆矩阵。
说出 [A | I] → [I | A⁻¹] 求逆法的流程。
用逆矩阵解 Ax=b,并说明解唯一的条件。
用伴随矩阵法求一个三阶矩阵的逆,并乘出 AA⁻¹ = I 验证。
解释 (AB)⁻¹ = B⁻¹A⁻¹ 与「先穿的后脱」的对应关系。
说清楚为什么「需要 A⁻¹b 时通常不真求逆」。
不查书写出二阶求逆口诀,并用 [[3,1],[2,1]] 十秒验证。
思考题
1. 为什么 det(A)=0 的矩阵一定不可逆?用几何回答。
提示:det=0 表示变换把空间压扁,多个点挤到同一个点,信息丢失,无法唯一还原。
2. [[1,2],[3,6]] 可逆吗?为什么?
提示:det=1·6−2·3=0,两列 (1,3)、(2,6) 共线,空间被压成一条线,不可逆。
3. 求 [[0,−1],[1,0]](旋转90°)的逆矩阵,它代表什么动作?
提示:det=1,逆 = [[0,1],[−1,0]],代表顺时针旋转 90°,即把逆时针旋转「旋回去」。
4. 为什么「解方程用高斯消元、判断解用逆矩阵」各有所长?
提示:高斯消元计算高效;逆矩阵让我们从 det 直接判断解是否存在唯一,理论更清晰。
5. 求 [[1,2],[3,4]] 的逆矩阵,并用乘法验证。
提示:det = 4−6 = −2。A⁻¹ = (1/−2)[[4,−2],[−3,1]] = [[−2, 1],[3/2, −1/2]]。验证 A·A⁻¹ = I(四个位置分别乘出来核对)。
6. (Aᵀ)⁻¹ 等于什么?给出两步证明。
提示:(Aᵀ)⁻¹ = (A⁻¹)ᵀ。因为 Aᵀ·(A⁻¹)ᵀ = (A⁻¹A)ᵀ = Iᵀ = I(转置反转乘法次序,恰好与「逆」的反序对齐)。
7. 若 A 可逆且 AB = AC,能否断定 B = C?
提示:能。两边左乘 A⁻¹:A⁻¹AB = A⁻¹AC ⇒ B = C。矩阵乘法没有一般消去律,「可逆」正是启用消去律的通行证——这也是判断「能否约去」的标准动作。
8. 用密钥矩阵 K = [[2,1],[1,1]] 加密明文向量 p = (3,4),再用 K⁻¹ 解密,全程验算。
提示:det(K) = 1,K⁻¹ = [[1,−1],[−1,2]]。密文 c = Kp = (2×3+4, 3+4) = (10, 7);解密 p = K⁻¹c = (10−7, −10+14) = (3, 4)——完好还原。det = 1 的矩阵在密码学里格外好用:整数进、整数出,连分数都不出现。
9. A = [[1,2],[3,4]],不显式求 A⁻¹,直接说出 det(A⁻¹)。
提示:det(A) = 1×4 − 2×3 = −2,而 det(A⁻¹) = 1/det(A) = −1/2。行列式的「缩放率倒数」性质让你跳过整个求逆过程——考试里的送分捷径,工程里的 sanity check:程序算出的逆若行列式不是 −0.5,立刻抓 bug。