矩阵的四个基本子空间
这一页从向量出发,把矩阵看成对向量的变换。在矩阵与线性变换页面,矩阵 A 把向量 x 移到新的向量 Ax;所以解 Ax = b,就是在问:哪一个 x 会被送到给定的 b?在行列式页面,行列式为零时,平面会被压到一条直线,或进一步缩成原点。这时有些输出根本得不到,而不同的输入也可能落到同一个位置。这一页要整理的正是这两种情况。
我们先把 Ax = b 看成一个过程:放入向量 x,经过矩阵 A,得到向量 b。如果现在给出 b,是否一定能找到对应的 x?如果能找到,会不会有不止一个?这两个问题会带我们分别观察输出和输入。我们会从具体的向量开始,再给其中的几个集合起名字,而不是一开始就记住四个空间的定义。
01我们要求什么?
先回想矩阵线性变换那一页的做法:从向量 x 出发,应用矩阵 A,得到新的向量 b。Ax = b 就是把这个过程写在一行里。这里固定 A,主讲解会一直使用同一个矩阵。
左图中的深色箭头是原来的 x。播放变换,可以跟随它的端点走到 Ax。右图单独记录输出。两图使用相同的坐标尺度;右图的坐标轴叫 b₁ 和 b₂,因为我们在那里读取输出。
看清当前这一步以后,再选择下一步。观察图形时,讲解不会自动向前。
从输入出发
读取输出
动画把起点和终点连接起来,帮助我们看清变化。A 表示给出最终位置的规则,并不是说向量真的沿这条路径运动。
02四个空间叫什么?
同一个矩阵 A 把输入送到输出。在这个过程中会出现四组向量,它们各有一个名字。下表说明每组包含什么向量,并给出它的维数。后面的章节会解释:每一组告诉了我们这个变换的什么信息。
先约定: 数矩阵 的行, 数它的列,所以输入有 个分量,输出有 个分量。空间的维数,数的是要用几个独立方向才能组合出其中的全部向量:过原点的直线需要一个,平面需要两个。列空间的维数叫矩阵的秩,记为 。本例的第二列是第一列的两倍,所以输出都在经过 的直线上;这条线上的每个点又能由输入 得到。因此 、。下表先预览四个数量。、 和下方的关系,会在逐个构造空间之后推导,现在不需要把它们当作新规则记住。
| 名字 | 里面有什么 | 位于 | 维数 |
|---|---|---|---|
| 行空间 | A 的每一行都是输入空间里的一个向量。这些行的全部线性组合组成行空间。 | ||
| 列空间 | A 的每一列都是输出空间里的一个向量。这些列的全部线性组合组成列空间,所以它正好是所有能得到的输出。 | ||
| 零空间 | 所有被 A 变成零的输入 x,也就是 Ax = 0 的全部解。 | ||
| 左零空间 | 输出这一端的整体空间中,所有被 Aᵀ 变成零的向量 y,也就是 Aᵀy = 0 的全部解。这里的 y 不一定是 A 真正能得到的输出 Ax。把 Aᵀy = 0 两边转置,得到 yᵀA = 0,yᵀ 写在 A 的左边,这就是“左”字的来源。 |
这四个空间和 A 本身有什么关系?A 把行空间里的每个向量都送到列空间里,而且不丢失信息:行空间中不同的向量,输出也不同。A 把零空间里的每个向量送到零。在输出这一端,Aᵀ 把左零空间里的每个向量送到零。
这两对空间还互相垂直。在输入空间里,行空间的每个向量都垂直于零空间的每个向量;在输出空间里,列空间的每个向量都垂直于左零空间的每个向量。下图中的直角符号标出的就是这两对关系。
四个色片分别标出四个子空间:输入这一端是行空间 Row(A) 与零空间 Null(A),输出这一端是列空间 Col(A) 与左零空间 Null(Aᵀ)。这里的形状只是关系示意图;在本例中每个子空间都是一条直线。
03列空间:哪些输出可以得到?
在使用 A 的列之前,先回到普通坐标。向量 (a, b) 就是 a 个 (1, 0) 与 b 个 (0, 1) 相加。这两个基本向量正是单位矩阵 I 的两列,所以乘以 I 后,向量保持不变。
看清当前这一步以后,再选择下一步。观察图形时,讲解不会自动向前。
原来的列向量
把各个倍数相加
一次只改变一个系数。第二根箭头从第一根的末端出发,沿着两根箭头走完就得到它们的和。系数为负数时,对应箭头会反向。
04行空间:哪些向量可以输入?
刚才我们用列来拼出输出。现在把同一个乘法按行读一遍:输出的每一个分量,是一整行与整个输入向量的点积。点积就是把对应分量相乘,再把结果加起来。
一个 m 行 n 列的矩阵,每一行有 n 个数。为了让点积有意义,输入也要有 n 个分量。矩阵有 m 行,所以输出有 m 个分量。这给出 A: ℝⁿ → ℝᵐ。ℝⁿ 中的每个向量都可以输入,并不要求输入本身是各行的线性组合。
这些行确实在输入空间里张成了一个子空间,我们把它叫作 Row(A)。在本例中,r₂ = 2r₁,所以行空间是左图中的金色直线。试试 x = (1, 3):它不在这条线上,但乘法仍然得到 (7, 14)。可见,整个输入空间与行空间是两件不同的事。
输入:整个 ℝ² 中的向量都能用
输出:两次行点积的结果
为了容纳输出,右图使用更大的数值范围。这是两份分开的 ℝ²。此处 Row(A) 与 Col(A) 方向恰好相同,因为这个矩阵是对称的;其他矩阵不一定如此。
不同输入可能给出相同的行点积。那么,一个非零输入能不能让每一行的结果都变成零?
05零空间:哪些输入会变成零?
零向量经过 A 当然还是零。但只有零向量才会这样吗?仍然用同一个矩阵,试试 x = (2, −1)。第一行得到 2 − 2 = 0,第二行得到 4 − 4 = 0。我们找到了一个会被 A 变成零的非零输入。
看清当前这一步以后,再选择下一步。观察图形时,讲解不会自动向前。
输入:c(2, −1)
输出:两列的贡献互相抵消
紫色输入可以沿整条直线移动。右图中,第二项的贡献总是把我们带回原点。
06左零空间:输出这一端又怎样?
把矩阵的列改写成行,就得到它的转置,记作 Aᵀ。如果 A 有 m 行 n 列,那么 Aᵀ 有 n 行 m 列,所以它接受一个有 m 个分量的输入。我们把这个输入叫作 y,避免与原来的 x 混在一起。
看清当前这一步以后,再选择下一步。观察图形时,讲解不会自动向前。
现在问哪些 y 满足 Aᵀy = 0。这就定义了 Null(Aᵀ),它位于原来 A 的输出空间里。本例恰好有 Aᵀ = A,所以 y = c(2, −1) 再次成立。但这里的 y 属于输出这一份 ℝ²,尽管坐标恰好与前面的零空间向量一样。
转置不是把原来的变换撤销,Aᵀ 通常也不是 A⁻¹。这里是构造一个新的矩阵,再对它提出输出为零的问题。
07这些空间怎样组成整体?
现在我们已经有了四组向量。在把它们放进一张图之前,要先解释它们之间的关系。从输入这一端开始:为什么零空间中的每个向量,都与行空间中的每个向量正交?
看清当前这一步以后,再选择下一步。观察图形时,讲解不会自动向前。
任取 Null(A) 中的 xₙ。按照定义,Axₙ = 0。按行读这个乘法,就得到每个 rᵢ · xₙ 都等于零。注意,rᵢ 与整个 xₙ 做点积,不是只与其中一个分量相乘。两个非零向量点积为零,表示它们垂直;零向量也与所有向量正交。
行空间中的向量是这些行的线性组合。把这个线性组合与 xₙ 做点积,再展开;每一项都为零,所以整体也为零。这证明的是整个行空间与零空间正交,而不仅是图中画出的几行。
反过来,如果 x 与每一行都正交,那么 Ax 的每个分量都为零,所以 x 属于 Null(A)。因此,Null(A) 恰好由所有垂直于 Row(A) 的向量组成。对 Aᵀ 做同样的推理,就得到输出这一端的对应关系。
上标 ⊥ 表示在同一个输入或输出空间中,所有与所写空间正交的向量组成的集合。
08为什么不同输入得到同一输出?
回到输入 (1, 3),它给出 (7, 14)。我们又已经知道 (2, −1) 给出零。把这两个输入的和乘以 A,会得到什么?利用矩阵乘法对加法的分配律展开,分别写出每一项的结果。
新的输入是 (3, 2),输出没有改变。这一步即使 (1, 3) 不属于 Row(A) 也成立。因此,我们先把它叫作一个特解 x₀,而不叫 xᵣ。接下来再找真正位于行空间中的那个解。
看清当前这一步以后,再选择下一步。观察图形时,讲解不会自动向前。
给出同一输出的输入
输出始终是 (7, 14)
虚线所示的解集与 Null(A) 平行,但这个非零 b 的解集不经过零点,所以解集本身不是向量子空间。右图使用较大的数值范围。
09把四个空间联系起来
把左半边读作输入空间,右半边读作输出空间。金色与紫色分解输入,青色与玫红色分解输出。直角符号标出正交关系。穿过 A 的箭头表示三个结果:xᵣ 到 b,xₙ 到零,而 xᵣ + xₙ 仍到同一个 b。
这是一张关系图,不是把两边放进同一个坐标系。在本例的 2×2 矩阵中,四个子空间都是直线,因此维数都是 1。下面的色片代表子空间,画出来的宽度并不表示它们是二维。播放可以同时跟随三条映射,也可以拖动进度,在任何位置停下。
对于一个 m 行 n 列的实矩阵,把 Col(A) 的维数记作 r,叫作矩阵的秩。下表列出四个空间的维数。在使用这些数量之前,先说明:刚才证明的对应为什么保证维数相同,剩余维数又为什么可以用减法得到。
维数是在数一组基需要多少条向量。基必须同时做到两件事:组合能够到达空间中的每条向量,而且其中任何一条都不能由其他条拼出。第二个条件叫线性无关。等价地,只有所有系数都为零时,组合才能等于零。
为什么经过 A 的对应会保留这个数量?选取 的一组基 。每个列空间输出都有行空间输入,所以都可以写成 。线性关系允许把系数移出来,因此 张成 。还需要检查新的方向有没有多余。
括号中的向量属于 。如果 A 把它送到零,它又属于 。前面证明过,这两个垂直空间只有零向量重合,所以括号内的向量就是零。由于 u 原本线性无关,每个 c 都只能为零。因此它们的像也组成一组基,两边同样有 k 条基向量,所以 k 就等于秩 r。
再把 的基与 的基放在一起。由于每个输入都有刚才构造的分解,它们能够到达所有输入。它们还线性无关:若一个行空间组合加一个零空间组合等于零,前者就是后者的相反数,属于两个空间,只能是零。因此两组组合都为零,所有系数也都为零。这组基的总数就是输入维数 n,所以 。对 m 维输出空间重复这一步,就得到另一边的数量。
| 子空间 | 定义 | 位于 | 维数 |
|---|---|---|---|
| Row(A) | |||
| Null(A) | |||
| Col(A) | |||
| Null(Aᵀ) |
再试一次最初的问题
对于本例的矩阵,b = (3, 6) 能得到吗?(3, 5) 呢?如果能得到,找出一个具体的解,并说明怎样从它写出全部解。
查看完整解答
(3, 6) = 3(1, 2),所以它属于 Col(A)。一个输入是 (3, 0),因为 A(3, 0) = (3, 6)。全部解是 (3, 0) + c(2, −1),其中 c 是任意实数。行空间中唯一的解是 (3/5, 6/5)。(3, 5) 不是 (1, 2) 的倍数,并且 2 × 3 − 5 = 1 ≠ 0,所以它无解。
