矩阵乘法是第一个真正把“行”与“列”结合起来的矩阵运算。它也是矩阵之所以
能表达复合、线性方程组与逆矩阵的核心原因。所以这条规则不能只靠死记;你
要明白每一步的大小条件到底在做什么。
为什么矩阵乘法比加法微妙
矩阵加法与数乘都是逐项进行。矩阵乘法则不同:输出中的一个元素,是由左边
矩阵的一整行与右边矩阵的一整列共同决定。
定义
矩阵乘积何时有定义
若 A 是 m×n 矩阵,B 是 n×p 矩阵,则乘积 AB
有定义,且结果是 m×p 矩阵。
若 A 的列数不等于 B 的行数,则 AB 未定义。
内侧大小必须配对;外侧大小则给出结果矩阵的大小。
行乘列规则
定义
矩阵乘法
设 A=[aij] 是 m×n 矩阵,B=[bjk] 是 n×p
矩阵。
则 AB 的 (i,k) 元素为
(AB)ik=ai1b1k+ai2b2k+⋯+ainbnk.也就是说,输出中的一个元素,是 A 的第 i 行与 B 的第 k 列按位相
乘后再相加。
这个定义同时说明三件事:
- 矩阵乘法不是逐项相乘;
- 内侧大小必须吻合;
- 一个输出元素会用到整行与整列中所有对应位置。
例题
细算一个矩阵乘积
令
A=[132−1],B=[4501].由于两者都是 2×2,所以 AB 有定义。其元素为
(AB)11=1⋅4+2⋅5=14,(AB)12=1⋅0+2⋅1=2,(AB)21=3⋅4+(−1)⋅5=7,(AB)22=3⋅0+(−1)⋅1=−1.因此
AB=[1472−1].
矩阵乘向量就是方程组语言
若 x 是列向量,那么 Ax 只是矩阵乘法的特例,但它刚好把线性方程组的左
边全部打包起来。
对
A=[132−1−15],x=x1x2x3,
有
Ax=[x1+2x2−x33x1−x2+5x3].
所以 Ax=b 并不是纯粹缩写,而是把整个方程组写成一个矩阵乘积。
单位矩阵是刻意“什么也不改变”的矩阵
定义
单位矩阵
对每个正整数 n,In 表示 n×n 单位矩阵:主对角线上全是 1,
其余位置全是 0。
例如
I2=[1001],I3=100010001.
单位矩阵之所以重要,是因为它对任何大小相容的矩阵都不起改变作用:
AIn=A,ImA=A.
例题
为什么乘上单位矩阵不会改变矩阵
若
A=[24−13],则
AI2=[24−13][1001]=[24−13].因为 I2 的第一列会抽出 A 的第一列,第二列会抽出 A 的第二列。
这正是往后定义逆矩阵的原因:若 A−1 存在,就要求 AA−1=I。
乘法一般不交换
线性代数最早令学生不习惯的地方之一,就是
AB=BA
一般并不成立。
有时两个乘积都定义,但结果不同;有时其中一个有定义,另一个根本未定义。
所以次序同时影响“能不能做”与“做出来是什么”。
下面的图可以帮你直接看到:一个输出元素,是如何由一行与一列构成的。
边读边试
跟着看一格矩阵乘法
互动工具会在你改变 A 与 B 的元素时,即时更新 AB 的每一格。
结果
8 = 1×2 + 2×3
用列的观点去读乘积
除了逐格计算之外,矩阵乘法还有另一种非常重要的读法。
如果把 B 的列写成
B=[b1 b2 ⋯ bp],
那么就有
AB=[Ab1 Ab2 ⋯ Abp].
也就是说,乘积的每一列,都可以理解成 A 乘上 B 的对应列向量。
矩阵乘法其实表示复合
矩阵乘法不是随手规定出来的公式,而是用来表达线性映射复合的规则。
如果向量 x 先被送到 Bx,再将结果送到 A(Bx),那么整体作用就是
(AB)x.
所以内侧大小一定要匹配,因为第一个变换的输出,必须是第二个变换可以接收
的输入。
定理
结合律对应重复复合
只要相关乘积有定义,就有
A(BC)=(AB)C.所以一串矩阵乘积可以改变分组方式,而不改变最后的线性变换。
标准基向量解释为什么列的观点这么自然
在 Rn 中,ek 是第 k 个位置等于 1、其余位置都为 0 的向量。
如果 A 是 m×n 矩阵,那么 Aek 就恰好是 A 的第 k 列。
因此单位矩阵一点都不神秘。In 的各列就是 e1,e2,…,en,所以
右乘 In,其实就是逐列把 A 自己原封不动地重建出来。
同一个 sanity check 也适用于零矩阵。如果右边矩阵每一列都是零向量,那么乘积
的每一列也都会变成零向量,所以任何大小相容的 A0 都一定是零矩阵。
最先要记住的代数法则
当乘法有定义之后,下一步就要问:它和你已经熟悉的其他矩阵运算如何配合。
只要大小相容,矩阵乘法满足
A(B+C)=AB+AC,(A+B)C=AC+BC,
而纯量也可以移进移出:
(cA)B=c(AB)=A(cB).
零矩阵是最简单的 sanity check。若 0 是大小相容的零矩阵,就有
A0=0,0A=0.
原因是:行乘列时只要其中一边全是零,所有输出元素都只能是零。
这些法则虽然基础,但后面谈逆矩阵、block 计算和更长乘积推理时都会默认使
用。如果不把它们明确掌握,后面的长计算会很难核对。
从练习题看出主要陷阱
矩阵代数的 assignment 题通常不只是测试算术。当乘积里面出现未知元素时,
题目往往同时要求你读懂大小、知道哪一行和哪一列决定某个输出元素,并记得
矩阵因子通常不能互相调换。
例题
由部分已知乘积反推出未知数
令
A=[11201231],B=a1b1b1a2.假设
AB=[13cd].乘积有定义,因为 A 是 2×4,B 是 4×2,所以 AB
必定是 2×2。只计算需要比较的元素,可得
AB=[a+b+5a+2b+1a+b+82a+b+2].把第一列与已知矩阵比较,得到
a+b+5=1,a+2b+1=3.因此
a+b=−4,a+2b=2.第二条减第一条得到 b=6,再代入得到 a=−10。余下元素是
c=a+b+8=4,d=2a+b+2=−12.
这类题目的重点,不是把所有元素都盲目乘出来,而是抽出已知乘积元素所强制
的少数方程。
例题
展开乘积时不要假设矩阵可交换
令 A 与 B 是同大小方阵。则
(5A−B)(2A+3B)=5A(2A+3B)−B(2A+3B).继续分配右边因子:
5A(2A+3B)−B(2A+3B)=10A2+15AB−2BA−3B2.中间两项是 15AB 与 −2BA。除非已知 AB=BA,否则不能把它们合并成
13AB。
同一个警告也解释了常见错误:
(A+B)(A−B)=A2−AB+BA−B2.
只有在额外知道 AB=BA 时,这才等于 A2−B2。实数代数会遮住这个问题,
因为实数乘法可交换;矩阵代数不会。
定理
下三角矩阵在乘法下封闭
一个 3×3 下三角矩阵具有以下形状:
∗∗∗0∗∗00∗.若 A 与 B 都是 3×3 下三角矩阵,则 AB 仍然是下三角矩阵。
可以用一次明确计算看出原因。写
A=a1b1d10c1e100f1,B=a2b2d20c2e200f2.
则
AB=a1a2b1a2+c1b2d1a2+e1b2+f1d20c1c2e1c2+f1e200f1f2.
对角线上方的元素保持为零,因为那些行乘列的和式中,每一项都会被左边或右
边其中一个上方零项杀掉。这是一个“形状性质”被矩阵乘法保留的好例子。
例题
零乘积不代表其中一个因子必定为零
令
A=[1−1],B=[11].两个矩阵都不是零矩阵,但
AB=[1⋅1+(−1)⋅1]=[0].所以矩阵乘法与实数乘法不同:AB=0 并不推出 A=0 或 B=0。
定理
单位矩阵是唯一的
如果 E 是一个 n×n 矩阵,而且对每个相容的 n×n 矩阵 A
都满足
EA=AandAE=A,那么就一定有 E=In。
常见错误
常见错误
矩阵乘法不是逐项相乘
(AB)ik 不是 aikbik。它来自 A 的第 i 行与 B 的第 k
列。
常见错误
一个方向可乘,不代表反方向也可乘
若 A 是 2×3、B 是 3×4,则 AB 有定义,但 BA
没有。不要自动把顺序反过来。
常见错误
列的观点是看右边因子的列
如果 B=[b1 b2],则 AB=[Ab1 Ab2]。乘积的各列是 A 的列的线性
组合,而权重来自 B 的对应列。不要写成 AB=[a1b1 a2b2];这并不
符合矩阵乘法的定义。
常见错误
二项式公式需要可交换假设
公式 (A+B)2=A2+2AB+B2 对矩阵不是自动成立。真正展开是
(A+B)2=A2+AB+BA+B2.只有在 AB=BA 时,才可以把中间两项合并。
快速检查
快速检查
若 A 是 2×3、B 是 3×5,那么 AB 的大小是什么?
快速检查
把一个大小相容的矩阵乘上 In,会发生什么?
快速检查
如果 B 的列向量是 b1 和 b2,怎样读 AB 的各列?
快速检查
展开 (5A−B)(2A+3B) 时,BA 的系数是多少?
练习
快速检查
为什么 Ax=0 不论 A 是什么,都至少有一个解?
快速检查
为什么有时 AB 有定义,但 BA 却没有定义?
快速检查
令 A、B 为上面含未知数的 worked example 中的矩阵。若 AB 的第一列是 [1,3]T,求 a 和 b。
快速检查
为什么两个 3×3 下三角矩阵的乘积仍是下三角矩阵?
不需要把所有元素乘出来;请解释对角线上方的元素为何保持为零。
相关笔记
本节建立在
2.1 矩阵基础 之上。
下一节可读
3.2 转置与特殊矩阵,
或直接跳到
5.1 可逆矩阵。