线性方程组 逆矩阵
在学校里,你用加减消元法、代入法机械地解过方程组。把两个方程摆在一起,一个一个消去 x 和 y,但这到底在做什么,你可能并没有感觉。其实方程组问的是:对某个输入施加变换 A 得到了 b,那原来的输入是什么?也就是把变换倒过来回放。“矩阵就是变换”一讲说矩阵就是变换,“行列式就是面积的倍数”一讲说这个变换可能把空间压扁,这两件事在这里合二为一。方程组什么时候有解、什么时候无解,答案早就在那幅图里了。
先用图来看 Ax = b 这个式子。A 是变换,x 是我们不知道的输入,b 是结果。对平面施加变换 A,所有点都会移到某处,其中恰好落在 b 位置上的那个点,就是我们要找的 x。图中的金色圆环是 b,蓝色箭头是候选输入,绿色箭头是对这个候选施加 A 的结果。拖动蓝点,让绿色箭头的尖端落进金色圆环,箭头就会变成金色,下方显示出答案。解方程组,归根结底就是倒着去找那个到达 b 的输入。
不过总不能每次都一个个试候选,所以有更聪明的办法。既然 A 把空间弯曲了,就应该有一个把这种弯曲准确还原的变换,那就是逆矩阵 A⁻¹。用图中的箭头按钮一步步往下走,单位正方形先被 A 扭曲,接着被 A⁻¹ 还原成原来的形状。下方的框里显示当前施加的矩阵,最后一步的矩阵是什么都不改变的单位矩阵。所以答案就是 x = A⁻¹b。让 b 通过一次倒着走的变换,得到的就是出发点。解方程组的公式,其实就是一个倒带按钮。
那么,答案总是恰好一个吗?只要变换没有把空间压扁,也就是上一讲看到的行列式不为 0,就是这样。变换把点均匀地铺开时,落到某个结果 b 上的输入恰好只有一个。图中金色箭头是结果,蓝色箭头是产生这个结果的输入;把金色的点随意拖动,每次都只跟着一支蓝色箭头。下方一行写着输入的坐标,同时也写着行列式的值。对于可以还原的变换,答案总是恰好一个,这就是“行列式不为 0 就能干净地解出来”这句话的真正含义。
接下来看行列式为 0 的情况。正如上一讲所见,平面被压成一条直线,这时会发生奇妙的事。如果结果 b 不在那条直线上,就根本没有输入能到达那里,于是无解。反过来,如果 b 在直线上,无数个输入都被压到了那一点,于是有无穷多个解。图中粗的灰色线就是被压扁的平面;拖动箭头尖端把它放到线上,下方的标签变成“无穷多解”,拖到线外则变成“无解”。要么没有答案,要么答案太多,只有这两种。行列式那里说的“没有逆矩阵”,在方程组里就同样表现为“得不到干净的答案”。
最后和学校里学过的图联系起来。把方程组的两个方程画成图像,就是两条直线,答案是两条直线的交点。两条直线相交这幅图,和刚才看到的把变换倒过来解这幅图,其实是同一回事。用滑块把行列式调小,绿色和橙色两条直线越来越接近平行,它们相交的金色点就是答案 x。行列式变成 0 的一刻,两条直线平行,不再相交。这时按下方的按钮让两个方程的右边相同,两条直线就完全重合,处处相交。前一种是无解的情况,后一种是有无穷多解的情况。被压扁的变换其实就是平行的直线,两幅图本是一体。