最近又特意翻看了一下 MIT 的那本经典的《线性代数》,对矩阵的秩和矩阵的四个子空间有了更加深刻的理解。
给定一个矩阵 ,这个矩阵的行列向量可以构成四个子空间,分别是 column space,row space,null space 以及 left-null space,矩阵有行,列两个维度,如果是列向量,那么就是 维,如果看成是行向量,就是 维,矩阵的列向量 span 成矩阵的列空间,而矩阵的行向量 span 成行空间,这个直接从矩阵的行列向量就可以得到。
而矩阵的 null space 和 left-null space,就需要进一步的求解了,矩阵的 null space 就是所有使得线性方程组 成立的,所有向量 构成的空间,而 left-null space,是使得线性方程组 成立的所有向量 构成的空间。
在 MIT 的《线性代数》中,对矩阵 的秩,即 rank 有三个层面的解读:
- 矩阵的秩为 ,表示线性方程组 中有 个 pivot,pivot 表示不可消去的变量,这是从数值的角度理解
- 矩阵的秩为 ,也表示矩阵 有 个线性无关的行向量或者列向量,这是从向量的角度来理解
- 矩阵的秩为 ,也表示矩阵的行空间或者列空间的“维度”为 ,这是最高一层的含义了,从空间的角度来理解。
可能前面的两个定义还比较好理解,而第三个定义,空间的“维度”,可能一眼看上去不太好理解。我们知道,三维空间的维度是 3,四维空间的维度是 4, 维空间的维度是 ,这里的维度是我们通常理解的物理定义上的维度,而在数学上,“维度” 还有更广泛的定义,“维度” 在线性代数里,更多的时候表示的是 span 该空间所需要的基向量的个数,而基向量,就是我们通常所说的线性无关的向量,矩阵的秩为 ,意味着矩阵的行,列空间里最多只有 个线性无关的向量,所以该空间的维度为 。
我们知道矩阵的列向量是 的向量,所以矩阵的列空间是 中的一个子空间,矩阵的行向量是 的向量,所以矩阵的行空间是 中的一个子空间,矩阵的行列空间的维度都是 ,也就是矩阵的秩,而矩阵的 null space 的维度是 ,矩阵的 left-null space 的维度是 。所以总结起来就是,如果 的秩为 ,那么:
- 矩阵 的列空间 的维度为 ,是 中的一个子空间
- 矩阵 的行空间 的维度为 ,是 中的一个子空间
- 矩阵 的 null 空间 的维度为 ,是 中的一个子空间
- 矩阵 的 left-null 空间 的维度为 ,是 中的一个子空间
矩阵的行空间和矩阵的 null space 是互相垂直的,同理,矩阵的列空间和矩阵的 left-null space 也是互相垂直的。这个比较好理解,假设 有非零解,也就是矩阵的 null space 存在,很显然, 中的每一行都和 相乘为 0,所以 中 的每一行都和 互相垂直,所以 的行空间与 的 null-space 是互相垂直的,同理也可以得到列空间与 left-null space 是互相垂直的。
下面来看看矩阵的行空间的维度为什么和矩阵的 null-space 的维度 “互补”,假设矩阵 是一个 的矩阵如下:
的秩为 2,所以矩阵的行空间的“维度”是 2,矩阵的 null space 是 中的一个子空间,假设 null-sapce 的向量为 , 就是我们所说的 pivot,而 就是我们所说的自由变量,我们随便取值,代入原方程都可以得到相应的解, 是由 来决定的,这两个自由变量组成的向量维度为 2,所以 null-space 的 “维度” 也是 2。换成另外一个矩阵:
的秩还是为 2,所以矩阵的行空间的“维度”是 2,矩阵的 null space 是 中的一个子空间,矩阵 pivot 的个数是 2,而自由变量的个数变成了 3, 而 3 个自由变量组成的向量的维度是 3,所以 null space 的维度是 3,所以矩阵行空间的维度与 null space 的维度之和总是等于矩阵行向量的维度。这两个空间互相垂直,并且维度之和等于 ,所以说这两个空间的基向量 span 起了整个 维空间。