矩阵运算与逆矩阵
上一章做高斯消元时,我们一直在“改矩阵”:交换两行、把一行乘一个非零数、把一行的倍数加到另一行。那些动作没有改变方程组的解,却把难读的系统整理成了阶梯形。
这一章要把视线从“怎样改一张系数表”挪到“矩阵本身在做什么”。矩阵可以相加、缩放,也可以乘向量和另一个矩阵。这里最容易卡住的是矩阵乘法:为什么偏偏要用左边的一行去点乘右边的一列?答案不在口诀里,而在矩阵代表的动作里。一个矩阵先改造向量,另一个矩阵接着改造结果;我们希望两步动作能合成一步,矩阵乘法的规则就是被这个要求逼出来的。
逆矩阵也会从同一条线索出现。如果矩阵 A 做完一个动作后,还有另一个矩阵能把所有结果原样送回去,那么这个“倒放动作”就是 A−1。上一章的行变换负责把系统往前化简,本章的逆矩阵负责说明什么时候整套变换可以完整倒放。
加法与数乘:把两套规则叠在一起
先看两种不太反直觉的运算。
假设两台线性变换机器 A 和 B 吃进去同一种向量,也吐出同一种向量。我们可以让它们同时处理输入,再把两个输出相加。新的变换记成 A+B。因为输出的每个坐标都要相加,矩阵中对应位置的数自然也要相加。
所以,只有形状相同的矩阵才能相加。若 A 和 B 都是 m×n 矩阵,那么
A+B=
同样,cA 表示把 A 的整个输出放大 c 倍,因此每个矩阵元素都乘 c:
cA=

加法是在同一位置汇合,数乘是让所有位置按同一倍数缩放。
来看一个具体计算。令
A=[13−20
那么
A+B=[52−12]
而
2A−B=[
这些运算保留了熟悉的代数规则,只要所有矩阵的形状合适:
A+B=B+A
(A+B)+C=A+(B+C)
c(A+B)=cA+cB
(c+d)A=cA+dA
矩阵相加前先看形状。一个 2×3 矩阵和一个 3×2 矩阵虽然都含有六个数,也不能相加。运算对齐的是“位置”,不是元素总数。
矩阵乘向量:先把最基本的动作看清楚
在讨论两个矩阵相乘前,先回到 Ax。设 A 是 m×n 矩阵,列向量 x 有 n 个分量:
A=
矩阵乘向量可以从两个方向读。
从列看:输入分量是配料用量
x1,x2,…,xn 分别告诉我们要取多少个 A 的第 列:
Ax=x1a1+x2a
这就是上一章矩阵方程背后的结构。方程 Ax=b 其实在问:能不能调出一组系数 x1,…,xn,让 A 的列向量组合成目标 ?
例如
A=130
那么
Ax=2
输入只有两个分量,所以 A 必须有两列;输出有三个分量,因为 A 有三行。于是 3×2 矩阵可以看成一台从二维输入到三维输出的机器。
从行看:每个输出坐标是一道点积
若把 A 的第 i 行记作 ri,那么 Ax 的第 i 个分量就是 r 与 的点积:
Ax=r1x
对刚才的例子,三个输出坐标分别是
1⋅2+2⋅(−1)=0
3⋅2+(−1)⋅(−1)=7
0⋅2+4⋅(−1)=−4
列视角告诉我们“输出由哪些方向拼成”,行视角告诉我们“每个输出坐标怎样被算出”。这两个视角没有竞争关系,它们只是把同一次运算从不同侧面拆开。
记住尺寸时,不妨把 m×n 读成“吃进 n 个坐标,吐出 m 个坐标”。这样比死背“行数在前、列数在后”更容易判断矩阵和向量能不能相乘。
矩阵乘法为什么会被复合变换逼出来
第一次看到“行乘列”时,很多人都会觉得这条规则是人为设计的:两张数字表格为什么不逐项相乘,偏要绕一圈做点积?
先别从数字表格出发。把矩阵看成函数。
假设 B 先把输入 x 变成 Bx,然后 A 接过这个结果,再变成 A(Bx)。我们希望把这两步动作打包成一台新机器 C,使它对每个输入都满足
Cx=A(Bx)
这台新机器被定义为
C=AB
也就是说,AB 的任务不是“把 A 和 B 的元素凑在一起”,而是准确记录“先做 B,再做 A”的总效果。
现在看这条要求怎样逼出行乘列。设 A 的第 i 行是
[ai1ai2
而 B 的第 j 列是
b1jb
要知道复合机器把第 j 个基本输入送到哪里,就要先取出 B 的第 j 列,再让 A 作用于它。这个输出的第 i 个坐标只能是
ai1b1j+ai2b
因此
(AB)ij=k=1∑na
这正是左边第 i 行与右边第 j 列的点积。行乘列不是额外塞进来的口诀,它只是把“动作接力”翻译成了坐标运算。

逐项相乘不会记录变换复合;行乘列记录的正是两步变换接起来后的坐标。
线性代数里没有特别说明时,“矩阵乘法”指行乘列。对应位置直接相乘是另一种运算,常叫逐项乘积或 Hadamard 乘积。它可以有用,但不能替代表示复合变换的矩阵乘法。
尺寸匹配:中间空间必须接得上
假设 B 是 n×p 矩阵。它吃进 p 个坐标,吐出 n 个坐标。接下来,A 必须恰好能吃进这 n 个坐标,所以 A 要有 列。若 是 ,那么整个过程最后吐出 个坐标:
Rp B R
对应的尺寸是
(m×n)(n×p)=m×p
“中间两个 n 相同”不是排版游戏。它表示 B 的输出空间正好是 A 的输入空间。接头尺寸不同,两步动作就根本接不起来。
例如:
最后两行很能说明问题:同样是一行和一列,顺序一换,一个结果是单个数,另一个结果是整张 5×5 矩阵。
行乘列:把一个乘积完整算出来
计算
A=[20
A 是 2×3,B 是 3×2,所以 AB 有定义,结果是 2×。结果的四个位置,要分别由 的两行与 的两列配对。
左上角来自 A 的第 1 行和 B 的第 1 列:
2⋅1+(−1)⋅
所以
AB=[−918133]
下面的互动允许你修改两个矩阵,再点结果中的任意位置。观察被选中的一行、一列和展开式怎样同步变化。
手算时怎样少出错
先写出结果尺寸,再画空矩阵。算每个位置时,用手指或笔固定左边的一行,再沿右边的列移动。完成一整行后再换左边的下一行。最常见的错不是乘错,而是中途把行或列换掉。
还有一个很实用的验算:AB 的每一列都应该有 A 的行数个分量,每一行都应该有 B 的列数个分量。结果形状不对,后面的数字不必再查,乘法一定已经走偏。
一次乘法的三种整体读法
行乘列一次得到一个数,适合手算;真正理解矩阵乘法,还要能一次看见整列或整行。
列视角:A 逐列处理 B
把 B 写成列向量拼接:
B=∣
那么
AB=
所以,AB 的第 j 列就是 A 乘 B 的第 j 列。B 把一组输入列排好,A 对它们逐个执行同一变换,再把输出列按原顺序摆回去。

一列一列看时,AB 就是 A 把 B 的每一列送到新位置后的集合。
进一步看,Abj 本身又是 A 的列向量的线性组合。若
bj=b
那么
Abj=b1ja1+
这句话会直接通向下一章:AB 的每一列都落在 A 的列向量能够张成的范围里。
行视角:B 让 A 的每一行重新组合
把 A 的行记作 r1,r2,…,rm,那么
AB=r1
因此,AB 的第 i 行是 A 的第 i 行右乘整个 B。如果再展开,riB 是 各行的线性组合,组合系数就是 中的数。
例如
[1
列视角说“右边提供待处理的列”,行视角说“左边提供组合右边各行的系数”。两种说法都比孤立地盯着某个元素更接近矩阵整体的结构。
列乘行:把乘积分成简单矩阵
还有一种拆法很有用。若 A 的列是 a1,…,an,B 的行是 ,那么
AB=a1s1+a2s
每个 aksk 都是“一列乘一行”得到的矩阵。比如
[
=[515
手算时行乘列最直接;研究列空间时列视角最自然;研究行怎样变化时行视角方便;把复杂矩阵拆成简单部分时,列乘行的拆法会再次出现。
顺序不能随便换
既然 AB 表示先 B 后 A,BA 就表示先 A 后 B。两句话顺序不同,总效果当然可能不同。
令
A=[1011
A 是水平剪切,B 是把水平方向拉长两倍。直接计算:
AB=[2011]
BA=[2021]
拿向量 e2=(0,1)T 试一下,差别更明显:
ABe2=[11],
先拉伸再剪切,与先剪切再拉伸,最后落点不同。

表达式从左往右写作 AB,动作却从最靠近输入的 B 开始。
矩阵乘法通常不满足交换律:
AB=BA
但它满足结合律和分配律:
(AB)C=A(BC)
A(B+C)=AB+AC
(A+B)C=AC+BC
结合律的直觉很简单:连续做三次变换时,先把前两次打包还是先把后两次打包,不会改变实际的动作顺序。括号可以换,矩阵的左右次序不能换。
单位矩阵 I 什么也不改变,所以在尺寸合适时
AI=A
IA=A
不要把实数代数的“移项”和“约分”原样搬到矩阵上。由 AB=AC 不能直接断定 B=C;只有当 A 可逆时,才能在等式两边同时左乘 A,把 消掉。
转置:把行和列交换角色
转置把矩阵沿主对角线翻过去。若 A 是 m×n 矩阵,那么 AT 是 n×m 矩阵,并且
(AT)ij=Aji
例如
A=[14253
转置后是
AT=123

转置后,第 i 行成为第 i 列;矩阵尺寸也随之对调。
几条常用规则是
(AT)T=A
(A+B)T=AT+BT
(cA)T=cAT
乘积的转置要格外小心:
(AB)T=BTAT
为什么顺序反过来?AB 的第 i 行第 j 列来自 A 的第 i 行和 B 的第 j 列。转置以后,这个数跑到第 行第 列;要重新用行乘列得到它,就要先取 的第 行,再取 的第 列。因此左右顺序必须互换。
若一个方阵满足
AT=A
它叫对称矩阵。对称的意思是主对角线两侧互为镜像。无论 A 是否为方阵,只要乘积有定义,ATA 和 AAT 都是对称矩阵,因为
(ATA)T=ATA
不过它们的尺寸通常不同,也不应被当成同一个矩阵。
逆矩阵:让整套变换倒放
对非零实数 a,倒数 a−1 满足 a−1a=aa−1=。矩阵的逆沿用这个想法,但把数字 换成单位矩阵 。
对 n×n 方阵 A,如果存在矩阵 A−1,使得
A−1A=I
并且
AA−1=I
那么 A 叫可逆矩阵,A−1 叫 A 的逆矩阵。
这里要求两边都能还原。若只在某一边乘起来得到单位矩阵,在一般的长方形矩阵情形下,只能叫左逆或右逆,不能说已经拥有完整的逆矩阵。本课程说“可逆矩阵”时,默认讨论有双侧逆的方阵。
逆矩阵为什么唯一
假设 B 和 C 都声称是 A 的逆,并且有
BA=I,AC=I
利用结合律:
B=B(AC)=(BA)C=C
所以一个矩阵一旦可逆,它的逆不会有两个不同版本。
复合动作怎样倒放
如果 AB 表示先做 B,再做 A,要把整套动作撤销,就得先撤销最后做的 A,再撤销最先做的 B。因此
(AB)−1=B−1A−1
可以直接验算:
(AB)(B−1A−1)=A(BB−1)A
这和脱外套、脱衬衫后想恢复原状很像:穿回去时必须反过来,先穿衬衫,再穿外套。转置乘积和逆乘积都会反转顺序,原因都来自复合动作的先后关系。
可逆与唯一解其实是同一件事
考虑方程
Ax=b
如果 A 可逆,在等式两边同时左乘 A−1:
A−1Ax=A−1b
于是
x=A−1b
这不仅给出一个解,也说明解不可能有两个。假如 x1 和 x2 都满足方程,那么
Ax1=Ax2
左乘 A−1 后得到
x1=x2
几何上,可逆变换不会把两个不同输入挤到同一个输出,也不会漏掉任何输出。每个 b 都能沿着 A−1 唯一回到一个 x。

可逆时,A 把每个 x 唯一送到一个 b,A−1 再把这个 b 唯一送回原来的 x。
如果 A 不可逆,事情会坏在两个方向之一。某些 b 根本到不了,于是 Ax=b 无解;某些能到达的 b 可能由不止一个 x 送来,于是方程有无穷多解。对方阵来说,“每个 b 都有唯一解”恰好等价于“A 可逆”。
把三句话绑在一起记:代数上存在 A−1;方程上 Ax=b 对每个 b 有唯一解;几何上变换既不把不同输入挤在一起,也不漏掉输出。这三句话描述的是同一种可逆性。
对二阶矩阵,数 ad−bc 还能记录单位方格经过变换后的有向面积倍数,常记作 det(A)。它的绝对值是普通面积的放大倍数;它等于 0 时,单位方格被压成线段或点,变换必然不可逆。下一节会看到,同一个 ad−bc 也正好出现在二阶逆矩阵公式的分母里。
下面的互动可以切换可逆、不可逆和接近不可逆的矩阵。拖动 b,观察解 x 和单位方格面积怎样变化。
二阶矩阵的逆
对二阶矩阵
A=[acbd]
若 ad−bc=0,那么
A−1=ad−bc1[
这个公式看起来像一套记忆动作:主对角线交换,副对角线变号,再除以 ad−bc。但公式是否可信,最后只看乘回去能不能得到 I:
[ac
再除以 ad−bc,结果就是单位矩阵。
如果 ad−bc=0,右侧会变成零矩阵,公式还要除以 0,所以逆不存在。以
[1224]
为例,第二列是第一列的两倍。这台机器只有一个真正独立的输出方向,会把整个平面压到一条线上;压扁以后,原来垂直于那条线的信息已经丢了,没法完整倒放。
A−1 不是把 A 中每个元素分别取倒数。矩阵的逆要撤销整套变换,元素倒数通常做不到这一点。判断候选答案最可靠的方法始终是乘回去检查是否得到 I。
用增广矩阵求逆
二阶公式只适合 2×2。更通用的方法直接接上上一章的高斯—若尔当消元:
[AI]⟶[
为什么这招有效?每次初等行变换都等价于在左边乘一个可逆的初等矩阵。假设全部行变换的总效果是左乘 E,并且左半边被化成了 I,那么
EA=I
所以 E=A−1。右半边原来是 I,经过同样的行变换后变成
EI=E=A−1
还有一个更贴近方程组的理解。A−1 的第 j 列是方程 Ax=ej 的解。把 I 的所有列放在 右边,相当于把
Ax=e1,Ax=e2,…,Ax=
这些右端不同、系数相同的方程组一次性一起消元。
完整例题:求一个三阶矩阵的逆
求
A=101
的逆。
把 A 和 I 拼成增广矩阵:
左半边已经是 I,所以右半边就是
A−1=21
最后做一次验算。乘回去:
左半边化不成 I 时发生了什么
看这个增广矩阵:
[12241
做 R2←R2−2R1 后得到
[1020
左半边第二行全是 0,不可能再制造出第二个主元,也就不可能化成 I。算法在这里不是“算不下去了”,而是在明确报告:原矩阵不可逆。
用逆矩阵解方程:什么时候值得这样做
解方程组
{2x+y=5x+3y=7
写成
[2113]
令系数矩阵为 A。因为
2⋅3−1⋅1=5=0
所以
A−1=51[3
于是
[xy]=
把答案代回去:
2⋅58+59=5
58+3⋅59=7
两条方程都成立。
不过,若只解一个右端 b,直接消元通常比先求完整的 A−1 更省计算。逆矩阵的优势在于它一次描述了所有右端:当同一个 A 要反复配上许多不同的 b,或者我们需要讨论解怎样随 b 改变时,x= 才真正显示出它的力量。
容易混淆的地方
“除以矩阵”不是合法步骤
从 Ax=b 到 x=A−1b,准确说法是“两边左乘 A−1”,不是“把 除过去”。矩阵乘法有顺序,所以含糊的“除法”会掩盖关键位置。
例如 XA=B 中,若 A 可逆,应该在右边乘 A−1:
XAA−1=BA−1
所以
X=BA−1
写成 A−1B 通常是错的。
(A+B)−1 不能拆开
一般来说
(A+B)−1=A−1+B
逆矩阵撤销的是完整变换,而“先相加再撤销”没有理由等于“分别撤销再相加”。遇到逆矩阵恒等式,最可靠的判断仍是按顺序乘回去。
AB=0 不代表某个因子一定为零
矩阵可能先把空间压到某个方向,下一台机器恰好再把这个方向压成零。因此即使 A=0 且 B=0,也可能有 AB=0。例如
[100
这也是为什么矩阵等式不能随意约分。可逆性提供了约分所需的保证;没有逆,就可能丢失信息。
综合练习
练习一:加法与数乘
已知
A=[20−13
计算 3A−2B。
先分别数乘:
3A=[60−3
练习二:用列组合算 Ax
设
A=[1−10
把 Ax 写成 A 的列向量的线性组合,并算出结果。
x 的三个分量分别是三列的系数,因此
Ax=2[
练习三:判断尺寸与顺序
设 A 是 3×2,B 是 2×4,C 是 4×。判断 、、、 是否有定义,并写出结果尺寸。
AB:(3×2)(2×4)中间维数匹配,所以有定义,结果是 3×4。
BA
练习四:分别用列视角和行乘列计算
设
A=[2103
先把 B 的两列分别乘以 A,再用行乘列验算 AB。
B 的两列是 (1,4)T 和 (−2,0)T。先逐列处理:
练习五:转置乘积
令
A=[102−1
计算 (AB)T 和 BTAT,验证两者相等。
先算
AB=[7−29−4]所以
练习六:求逆并验算
判断下面的矩阵是否可逆;若可逆,求出逆矩阵并用乘法验算。
M=[3211]
先看分母:
3⋅1−1⋅2=1=0所以 M 可逆,并且
练习七:矩阵方程里的左右顺序
设 A 和 B 都可逆,解矩阵方程
AXB=C
先在左边乘 A−1:
A−1(AXB)=A−1C利用结合律得到
本章小结
矩阵加法和数乘逐项进行,因为它们分别表示变换输出的相加与整体缩放。矩阵乘向量有两种同时成立的读法:按列看,它是列向量的线性组合;按行看,每个输出坐标是一行与输入向量的点积。
矩阵乘矩阵服务于变换复合。AB 表示先做 B、再做 A,所以中间维数必须接得上,结果的每个位置由左行与右列的点积产生。它通常不交换,却满足结合律和分配律。列视角给出 AB 的各列为 Abj,行视角给出各行为 。
转置交换行列,乘积转置时顺序反转。逆矩阵则撤销整个变换;A 可逆、Ax=b 对每个 b 有唯一解、变换不丢失输入信息,是同一件事的三种说法。增广法 [A∣I]→[I∣ 把上一章的行变换变成了求逆算法。
最后留下一个问题。既然 Ax 是 A 的列向量的线性组合,那么这些列究竟能拼出多大的范围?如果某一列能由其他列拼出来,它是不是没有提供新方向?可逆矩阵为什么恰好不能有这种“多余列”?下一章会用子空间、张成、线性无关、基与维数把这些问题说清楚。