矩阵四大子空间
把向量放进矩阵 A,会得到另一个向量;但并不是所有输入都受到同样的对待:有的方向完好地出来,有的方向整个被压成 0。于是一个矩阵把空间分成四块:输出一侧有能到达的全部结果组成的列空间和左零空间,输入一侧有行空间和由走向 0 的方向组成的零空间。存活方向的个数叫秩,消失方向的个数叫零度,两者相加总是等于输入的维数。只用这一张图,就能说明 A x = b 为什么有时无解、有时恰有一个解、有时有无穷多个解,揭示出光看逆矩阵看不到的结构。本讲依次讲列空间、零空间、秩与零度、行空间与零空间的正交,以及解的结构。
列向量平行的矩阵,会把整个平面压到一条直线上。下图里的 A = [1 2 ; 0.5 1] 是一个扁平的矩阵,两列 (1, 0.5) 和 (2, 1) 指向同一个方向,绿色和橙色线段就是这两列。不管把蓝色的输入 x 拖到哪里,金色的输出 A x 都只落在金色直线上;一开始 x = (2, −1.4),A x = (−0.8, −0.4)。A x 是第一列的 x1 倍加上第二列的 x2 倍,第二列又是第一列的 2 倍,所以结果总是 (x1 + 2 x2) × (1, 0.5) 的形式。因此输出离不开 (1, 0.5) 方向的直线,这条汇集了全部可达结果的直线就是 A 的像,也就是列空间。两列平行,所以列空间不是平面,只是一条一维直线,这个维数 1 就是 A 的秩。
还是这个矩阵,这次看输入一侧:放在下图蓝色直线上的输入,全都被压成 0。一开始 x = (2, −1) 就在这条直线上,所以输出 A x 贴在原点,下面一行也写着 0。满足 x1 + 2 x2 = 0 的输入,也就是 (2, −1) 方向的整条直线,就是零空间。只要把 x 从这条直线上稍微拖开,输出就立刻跳到金色的列空间直线上,比如 x = (2, 0) 时 A x = (2, 1)。走向 0 的不是一个点,而是一整条直线,所以 A x = 0 的解不只是 x = 0 一个,而是有无穷多个;这个事实是后面解为什么可以有很多个的关键。
一个满秩矩阵被压扁的那一刻,秩减少一,零度增加一。下图用滑块把第二列往第一列那边放倒,让满的矩阵塌成扁平的矩阵。一开始滑块在 0,两列张开 111.7°,单位正方形变成平行四边形,det = 2.08,秩为 2,零度为 0。把滑块推到 0.9,det 缩到 0.43;到 0.99 时 det = 0.04 仍不为 0,所以秩还是 2。推到尽头 1,两列恰好重合,det = 0.00,平行四边形压成一条线段,秩变成 1、零度变成 1,因为有一整条直线走向 0。无论哪种情形,秩加零度都是 2,这正好展示了秩-零度定理:存活的维数加上消失的维数,等于输入的维数 n。
输入平面上不只有零空间,还有行空间。下图的金色直线是两行张成的行空间,也就是 (1, 2) 方向;蓝色直线是零空间 (2, −1) 方向。两条直线在原点恰好垂直相交,因为 A x 的每个分量都是某一行与 x 的内积,x 在零空间里,就意味着 x 与每一行都垂直。按下“显示分解”,输入 x = (2.4, 1.2) 拆成行空间分量 (0.96, 1.92) 与零空间分量 (1.44, −0.72) 之和。A 把行空间分量送到 (4.8, 2.4),把零空间分量送到 0,所以输出只由行空间分量决定。输入就这样以直角分成存活的一半和消失的一半。
现在用四个子空间来解 A x = b:下图的滑块把目标 b 移进或移出金色的列空间直线。一开始 b = (1.61, 1.79) 在列空间外,没有输入能到达这个 b,文字显示解的个数为 0。把滑块对准中间的 0,b = (2, 1) 落到列空间上,特解 (2, 0) 和穿过它、沿零空间方向的蓝色虚线出现,文字变成有无穷多个解。在特解上再加多少零空间方向,输出都仍是 b,所以 (2, 0) + t (2, −1) 这条直线整个就是解集;这条直线属于输入平面,是叠画在同一块板上的。如果是零空间只有 0 的满秩矩阵,解就恰好只有一个,也就是逆矩阵给出的答案;解有 0 个、1 个、无穷多个这三种情形,全都直接出自四个子空间的形状。