直观理解矩阵:变换旅行的机器

矩阵是那个会让本来学得好好的学生突然觉得自己变笨的主题。到此为止,每一种运算都有一幅图。加法是合并。乘法是缩放。就连上周那篇文章里的向量运算,也是你可以走完的旅行。然后有人写出两张数字表格,宣布你要用「行乘列」的方式把它们乘起来,图景就此消失。规则管用。没人能说出它在做什么。
结果是第二种重影,是向量那篇文章里那一种的同胞。代数课上,矩阵是一盒数字。后续课程里它成了「线性变换」,这个说法听起来像答案,却什么也没解释。这篇文章就是那座桥:矩阵是一台吃进一次旅行、吐出另一次旅行的机器,表格的每一列都是一根坐标轴落点的记录,而乘法规则不过是两台机器依次运行时的记账方式。
一台变换旅行的机器
这个系列反复回到同一个念头:数是有指向的。负数是沿数轴指向反方向的普通数。虚数是指向侧面的数,离开数轴,进入一个平面。向量是这个念头的彻底解放,一个携带任意方向的量。一旦你有了旅行,下一个问题几乎是被迫提出的。什么东西作用在一次旅行上?什么东西把「向东 3、向北 4」变成另一次旅行?
那个行动者就是矩阵。
想象一台机器,它的设定可以拉伸、压扁、旋转或翻转你送进去的任何东西。你给它一次旅行,它还给你一次旅行。一个 2 乘 2 的矩阵,就是这样一台作用在平面上的机器的完整说明书。一个 3 乘 3 的矩阵,是同一想法在空间里的版本。那张数字表格不是对象本身。表格是说明书。
这就是为什么矩阵不是一个更大的向量。向量是一次旅行。矩阵是一条改造旅行的规则。把两者混为一谈,就像把旅程本身和把你吹偏航线的天气混为一谈。
各列记录的是坐标轴落在哪里
下面这个事实,会让整个主题变得可读。你不必知道矩阵对每一次可能的旅行做了什么。你只需要知道它对其中两次做了什么:向东一步,以及向北一步。其他每一次旅行都是这两次的组合,所以机器对任意旅行的作用,就是它对坐标轴作用的同一种组合。
把这两个结果写成列,你就得到了矩阵。
假设机器把向东一步送到 (2, 1),把向北一步送到 (0, 3)。矩阵就是那个 2 乘 2 的表格,第一列是 2, 1,第二列是 0, 3。把旅行 (3, 4) 送进去,意思是「先向东 3,再向北 4」,输出就是 3 份第一列加上 4 份第二列:3 倍的 (2, 1) 加上 4 倍的 (0, 3),也就是 (6, 3) 加上 (0, 12),结果是 (6, 15)。这就是矩阵乘向量。课本里的行乘列仪式,就是这同一个和,写成计算机不用画箭头也能跑的样子。
从向量那篇文章过来的读者会认出这个和:你在把缩放后的旅行加起来。矩阵并没有发明一种新算术。它复用了旅行的算术,每一列用一次。
单位矩阵是什么也不做的那台机器。向东一步仍是向东一步,向北一步仍是向北一步,所以它的各列恰好就是两根坐标轴上的旅行。送进去任何东西,你拿回来的都是同样的东西。它是设定为 100%、不旋转的复印机,也是数字 1 在这门学科里有对应物的原因。
乘法的意思是先做这个,再做那个
那个感觉像凭空发明出来的规则,两个矩阵相乘,其实是函数复合穿上了一张表格。用 A 乘 B,就是造出那台先做 B、再做 A 的单一机器。你把一次旅行送给 B,取出结果,再送给 A。乘积 AB 就是这台组合机器的说明书。
这就是为什么顺序很重要,也是为什么它感觉是反的。AB 不是 BA,理由和先穿袜子再穿鞋不等于先穿鞋再穿袜子一样。右边的机器先作用,因为我们写函数时已经是这个约定:f(g(x)) 先作用 g。矩阵乘法继承了同一套惯例。
这也是行乘列配方存在的原因。AB 的各列,是组合机器对坐标轴做的事,也就是把 A 作用到 B 的各列上。其中每一列都是一次矩阵乘向量,而每一次矩阵乘向量都是一堆数量积。课本仪式是同一想法的三层叠加,压成一条口诀。
一个有用的后果:你可以停止死记什么时候两个矩阵允许相乘。它们能相乘,当且仅当第一台机器吐出的旅行,尺寸刚好能送进第二台。一个 2 乘 3 的矩阵吃进三维旅行,吐出二维旅行。它可以坐在一个 2 乘 2 矩阵的右边,后者吃进二维旅行;也可以坐在一个 3 乘 4 矩阵的左边,后者吐出三维旅行。内侧的尺寸必须匹配,因为它们是同一条走廊。
行列式是面积还剩多少
把边为两根坐标轴旅行的单位正方形送进机器。图像是一个平行四边形,边就是那两列。行列式是这个平行四边形的有向面积。
如果行列式是 2,机器把面积翻倍。如果是 1/2,它把面积减半。如果是 0,平行四边形已经塌成一条线段或一个点:机器把平面压扁了,两次不同的旅行可以落到同一处,信息被扔掉了。如果是负的,机器翻转了定向,把逆时针的正方形变成顺时针的,和负数在数轴上做的掉头是同一件事。
那些计算配方,2 乘 2 时的 ad 减 bc,以及后来的余子式展开,都是算出这块面积的办法。它们不是含义。一旦你看见那个平行四边形,「行列式为零」就不再是一次神秘的失败,而变成一幅图:两列沿着同一条直线指去,所以它们张不成面积,所以这台机器和向那条直线的投影无法区分。
这也是行列式为零便禁止逆矩阵存在的原因,而逆矩阵正是下一节的全部主题。
逆矩阵就是撤销
逆矩阵是撤销按钮。如果 A 把旅行 v 送成旅行 w,那么 A 的逆就把 w 送回 v。先运行机器再运行它的逆,得到的是单位矩阵:你回到出发的地方,仿佛什么也没发生。
一台机器恰好在它没有扔掉信息时才能被撤销。这又是行列式检验。如果两次不同的输入旅行能产生同一个输出,就没有诚实的办法说出一个输出来自哪一次输入,逆矩阵也就不存在。如果每一个输出都恰好来自一次输入,撤销机器就存在,而且唯一。
在学校里,这件事以一个公式登场,公式里有行列式的倒数,还有一张打乱重排的数字表格。公式是真的,也值得练,但它是推论。想法是「把胶片倒着放」,而它只有在胶片没有把场面压扁时才成立。
线性方程组就是同一想法换了装。代数教过你用消元法解两个未知数的两个方程。那两个方程就是一个矩阵作用在一次未知的旅行上,并等于一次已知的旅行。解这个方程组,就是施加逆矩阵。当方程组无解,或有无穷多解时,行列式为零:机器把平面压扁了,右边要么没打中剩下的那条线,要么以无穷多种方式落在那条线上。你当年当作「无解」和「无穷多解」背下来的两种情形,就是一台塌缩的机器无法给出唯一撤销的两种方式。
特征向量拒绝转向
大多数旅行送进机器后,出来时指向了新方向。少数特别的旅行出来时仍指向它们进去的那个方向,只是更长或更短。那些旅行就是特征向量,伸缩倍数就是特征值。
画面是一座风洞。大多数箭头会被吹歪。特征向量是那些风只把它们拉长或缩短的箭头。如果倍数是 2,机器把那次旅行翻倍。如果倍数是 1,它放过那次旅行。如果倍数是 0,它把那次旅行压成虚无,这就是前两节里的压扁,沿着单一方向看见的样子。如果倍数是负的,它既拉伸那次旅行,也让它掉头。
这是后续章节里那个看起来高深、其实并不高深的想法。求特征向量,就是在问:沿着哪些方向,这台机器表现得像普通的数乘?一旦你有了那些方向,机器在那套坐标系里就变简单了,这就是为什么每一个用到矩阵的学科,从微分方程到给网页排名,一上来都在搜它们。
错误从哪里来
矩阵的错误集中在三处,而每一处都是一幅从未被画出来的图。
第一处是按格子对应相乘。学生看见两张同样大小的表格,就把数字一对一对配上,就像矩阵加法那样,而加法确实是逐格进行的。乘法不是加法。它是先运行一台机器,再运行另一台。两个 2 乘 2 的矩阵得到另一个 2 乘 2,但每一列输出都是 A 作用到 B 的一列上,而不是四对对应格子各自相乘。
第二处是无视顺序。只要 A 和 B 做的事不同,AB 和 BA 就是不同的机器,而这几乎总是如此。按你遇见它们的顺序来写因子,而不是按它们作用的顺序来写,就是袜子和鞋的错误,也是整章里最常见的代数滑倒。
第三处是把行列式为零当成计算器坏了,而不是一个被压扁的平行四边形。机器仍然在做事:它把每一次旅行送到一条线上,或送到原点。它只是无法被撤销。「没有逆矩阵」不是宇宙的拒绝。它是对一台丢掉了一个维度的机器的描述。
Math Zen 能帮上什么
矩阵坐落在向量这一层楼板之上,那里的晃动会立刻显形。把各列相加,就是向量加法。「行乘列」那一步是数量积。2 乘 2 矩阵的行列式是平行四边形的有向面积,和向量那篇文章里平行四边形法则用的是同一套几何。如果那些运算还停留在口头上而不是视觉上,每一次矩阵计算都会变成仪式。
Math Zen 的分级题桶练习会把楼层按顺序夯实。前期的题桶反复操练带符号的运算和单位圆。随后的向量题桶让加法、缩放和数量积变成反射。矩阵题桶把这些当作已知,再操练新的运算:乘法、求行列式、求逆、解方程组、求特征值,而这恰好就是这篇文章里那串图景,变成你可以每天做的短题。间隔重复练习会把「各列记录的是坐标轴落在哪里」从一句你曾经觉得有说服力的话,变成你在考题第二行就会用上的反射。
一句话总结
矩阵是一台吃进一次旅行、吐出另一次旅行的机器。那张数字表格是说明书:每一列是一根坐标轴的落点,对任何其他旅行的作用,就是这些列的对应组合。两个矩阵相乘,造出的是先运行右边那一台的机器。行列式是面积还剩多少,为零时机器把平面压扁。逆矩阵是撤销按钮,恰好在什么也没被压扁时存在。特征向量是那些机器只拉伸、不转动的稀有旅行。
这样收拢在一起,这门课里其实只有一个想法,只是被应用到越来越大的机器上。两间教室造成的重影,会在你不再追问矩阵「究竟」是一张表格还是一个变换的那一刻消散。它其实是一台机器,表格不过是坐标轴去了哪里的清单。
常见问题
- 用最简单的话说,矩阵是什么?
- 矩阵是一台吃进一次旅行、吐出另一次旅行的机器。那张数字表格不是对象本身,而是说明书。每一列记录一根坐标轴落到了哪里,对任何其他旅行的作用,就是这些列的同一种组合。向量是一次旅行。矩阵是一条改造旅行的规则。把两者混为一谈,就像把旅程本身和把你吹偏航线的天气混为一谈。
- 矩阵乘法为什么这么古怪?
- 因为它不是对应格子相乘。它是先运行一台机器,再运行另一台。乘积 AB 是那台先做 B、再做 A 的单一机器,和函数里已经在用的从右到左的约定相同。AB 的每一列,就是把 A 作用到 B 的对应列上,而其中每一列又是一堆缩放后的旅行。课本里的行乘列仪式,就是这层复合,写成你不用画箭头也能算出结果的样子。
- 矩阵的行列式到底是什么意思?
- 它是把单位正方形送进机器后得到的那个平行四边形的有向面积。行列式为 2,表示面积翻倍。行列式为 1/2,表示面积减半。为零,表示平行四边形塌成一条线或一个点,于是两次不同的旅行可以落到同一处,这台机器也就无法撤销。行列式为负,表示机器翻转了定向,把逆时针的正方形变成顺时针,和负数在数轴上做的掉头是同一件事。
- 什么是逆矩阵?
- 撤销按钮。如果 A 把旅行 v 送成旅行 w,逆矩阵就把 w 送回 v。先运行机器再运行它的逆,得到的是单位矩阵:你回到出发的地方。逆矩阵恰好在行列式不为零时存在,因为只有那时机器没有扔掉任何信息。解线性方程组就是同一件事换了装:系数是矩阵,未知数是输入的那次旅行,求解就是施加逆矩阵。
- 用大白话说,特征向量是什么?
- 一次只被机器拉伸或缩短、却不被转动的旅行。大多数旅行进去后,出来时指向了新方向。特征向量出来时仍沿着它进去的那条直线,只是更长或更短,这个伸缩倍数就是特征值。倍数是 2,旅行翻倍。倍数是 0,旅行被压成虚无。求特征向量,就是在问这台机器沿着哪些方向表现得像普通的数乘。


