这其实是线性代数里一个非常核心的结论,叫做秩(rank)等价定理,它告诉我们,一个矩阵的行秩和列秩总是相等的。听起来有点玄乎,但背后其实有着非常清晰的数学逻辑。咱们一点点捋清楚。
首先,我们得先明白“行秩”和“列秩”到底是什么意思。
行秩(Row Rank):
想象一下,我们把矩阵的每一行看作一个向量。这些向量就处在一个空间里,我们叫它“行空间”。行秩,说的就是这个行空间里,线性无关的行向量的最大个数。简单来说,就是我们能找到的最精炼的一组行向量,它们组合起来就能表示出所有的行向量,而且这组向量之间互相不依赖。
列秩(Column Rank):
同理,我们把矩阵的每一列也看作一个向量。这些列向量也构成了一个空间,叫做“列空间”。列秩,就是这个列空间里,线性无关的列向量的最大个数。同样的,就是最精炼的一组列向量,它们能够表示出所有的列向量,并且互相独立。
那为什么这两个数量会相等呢?
这里面其实有很多种证明方法,但我觉得最直观的理解,是结合矩阵的初等行变换和矩阵乘法来分析。
1. 利用初等行变换化为行阶梯形矩阵
我们知道,初等行变换(交换两行、用一个非零常数乘以某一行、将某一行乘以一个常数加到另一行上)对矩阵的行空间没有影响。也就是说,经过初等行变换后,新矩阵的行空间和原矩阵的行空间是同一个空间。
初等行变换最强大的地方在于,它可以把任何一个矩阵化为一个行阶梯形矩阵(Row Echelon Form)或者简化行阶梯形矩阵(Reduced Row Echelon Form)。
我们来看一个行阶梯形矩阵的例子(关键点在于主元(pivot)的位置):
```
[ 1 2 3 4 ]
[ 0 1 5 6 ]
[ 0 0 1 7 ]
[ 0 0 0 0 ]
```
在这个行阶梯形矩阵里,每一行的第一个非零元素(通常称为主元或领先元素)都在前一行主元的右边。更重要的是,每一行的主元所在列,除了该主元外,其他行的对应位置都是零。
在这个行阶梯形矩阵里,哪些行是线性无关的? 显然是那些全零行之外的非零行。 在上面的例子中,就有3个非零行,所以行秩是3。
现在关键来了:初等行变换不会改变矩阵的列秩。 为什么?
这是因为,矩阵乘法可以看作是对列向量的线性组合。假设原矩阵是 $A$,我们通过一系列初等行变换得到矩阵 $B$。这个过程可以表示为 $EA = B$,其中 $E$ 是一个可逆矩阵(由初等行变换对应的基本矩阵相乘得到)。
对行空间的影响: $EA$ 的行向量是 $A$ 的行向量经过线性组合得到的。因为 $E$ 可逆,所以 $E$ 的行空间也是整个向量空间。这保证了 $B$ 的行空间和 $A$ 的行空间是相同的。因此,行秩相等。
对列空间的影响: $EA = B$ 这个等式告诉我们,$B$ 的每一列都是 $A$ 的列向量经过相同的线性组合得到的。例如,如果 $A = [mathbf{a}_1, mathbf{a}_2, dots, mathbf{a}_n]$,那么 $EA = [Emathbf{a}_1, Emathbf{a}_2, dots, Emathbf{a}_n] = [mathbf{b}_1, mathbf{b}_2, dots, mathbf{b}_n]$。
这里的 $Emathbf{a}_i$ 实际上是把 $A$ 的第 $i$ 列向量看作一个列向量,然后用 $E$ 去乘以它。这意味着,列向量之间的线性关系在经过 $E$ 乘法后是保持不变的。
举个例子:如果 $A$ 的第 $j$ 列是 $c$ 倍的第 $i$ 列,即 $mathbf{a}_j = c cdot mathbf{a}_i$,那么在 $B$ 中,第 $j$ 列 $mathbf{b}_j$ 也将是 $c$ 倍的第 $i$ 列 $mathbf{b}_i$,即 $Emathbf{a}_j = E(c cdot mathbf{a}_i) = c cdot (Emathbf{a}_i) = c cdot mathbf{b}_i$。
所以,如果 $A$ 的列向量组中的某些向量是线性无关的,那么 $B$ 的对应列向量组也会是线性无关的,反之亦然。线性无关的列向量的个数是不会因为乘以一个可逆矩阵而改变的。因此,原矩阵 $A$ 的列秩等于变换后的矩阵 $B$ 的列秩。
结合起来:
我们通过初等行变换把 $A$ 变成一个行阶梯形矩阵 $B$。
1. 行秩: 因为初等行变换不改变行空间,所以 $rank(A) = rank(B)$。在行阶梯形矩阵 $B$ 中,行秩就是非零行的个数。
2. 列秩: 同样,初等行变换也不改变列向量之间的线性关系(通过可逆矩阵乘法 $EA=B$ 体现),因此 $rank(A) = rank(B)$。
现在问题转化为:在行阶梯形矩阵 $B$ 中,行秩(非零行个数)是否等于列秩?
我们看回行阶梯形矩阵的结构。非零行的个数等于主元的个数。每一个主元都出现在一个独特的列上,并且这个主元是该列中第一个非零元素。
考虑行阶梯形矩阵 $B$ 的非零行。这些行是线性无关的。它们所在的主元列也是线性无关的。为什么主元列线性无关?
假设主元列中的某个列向量 $mathbf{b}_{i}$ 是其他主元列向量的线性组合。比如 $mathbf{b}_j = sum_{k
eq j} c_k mathbf{b}_k$ (其中 $mathbf{b}_k$ 都是主元列)。我们知道 $mathbf{b}_j$ 的主元在第 $j$ 列的某个位置上,并且是该列的第一个非零元素。而其他列向量 $mathbf{b}_k$ 的主元要么在比第 $j$ 列更靠前的列上,要么在更靠后的列上。
我们把这个线性组合写成矩阵的形式。设 $P$ 是一个矩阵,其列向量是 $B$ 的主元列。那么,在 $B$ 中,非零行(也就是主元所在行)的向量是线性无关的。而这些非零行所对应的主元所在的列,它们的线性无关性是怎么体现的呢?
更直接的证明是考虑零空间(Null Space)。
矩阵 $A$ 的零空间是所有满足 $Ax = 0$ 的向量 $x$ 的集合。根据秩零度定理(RankNullity Theorem),对于一个 $m imes n$ 的矩阵 $A$,有:
$rank(A) + nullity(A) = n$
其中,$rank(A)$ 是矩阵的秩(这里我们先不区分行秩和列秩),$nullity(A)$ 是零空间的维度(零度)。
行空间的基是线性无关的行向量。
列空间的基是线性无关的列向量。
矩阵 $A$ 的行秩等于行空间 $C(A^T)$ 的维度。
矩阵 $A$ 的列秩等于列空间 $C(A)$ 的维度。
通过初等行变换化为行阶梯形矩阵 $B$ 后,我们知道:
1. $A$ 的行空间与 $B$ 的行空间相同,所以 $rank_{row}(A) = rank_{row}(B)$。
2. $A$ 的列向量组的线性无关性与 $B$ 的列向量组的线性无关性是相同的,所以 $rank_{col}(A) = rank_{col}(B)$。
现在我们只需要证明行阶梯形矩阵的行秩等于列秩。
考虑一个行阶梯形矩阵 $B$。
$rank_{row}(B)$ 就是非零行的个数。设这个个数为 $r$。
这 $r$ 个非零行向量是线性无关的。
考虑 $B$ 的主元列。这些主元列也是线性无关的。
为什么?我们假设存在一个线性组合,使得某些主元列的组合为零向量:
$sum_{j in P} c_j mathbf{b}_j = mathbf{0}$
其中 $P$ 是所有主元列的索引集合,$mathbf{b}_j$ 是 $B$ 的第 $j$ 列。
这个等式实际上是在说,零向量可以由这些主元列线性组合而成。
然而,在行阶梯形矩阵中,每个主元都处在一个唯一的列上,并且在该列中是第一个非零元素。
考虑这个线性组合的第一个非零元素,假设它出现在第 $k$ 行。
那么,在第 $k$ 行,这个线性组合就变成了:
$c_k cdot b_{kk} + sum_{j in P, j
eq k} c_j cdot b_{kj} = 0$
其中 $b_{kk}$ 是主元,所以 $b_{kk}
eq 0$。而其他项 $b_{kj}$ 都是该列主元在第 $k$ 行的值。由于主元在第 $k$ 行,所以其他列的主元要么在第 $k$ 行的前面(不可能是,因为 $b_{kk}$ 是主元),要么在第 $k$ 行后面。如果其他列的主元在第 $k$ 行,那么它们的值不一定是零。
换个角度思考,更简洁:
我们知道初等行变换把 $A$ 变成行阶梯形矩阵 $B$,$EA=B$,$E$ 是可逆的。
$A$ 的列空间是 $C(A) = {Ax mid x in mathbb{R}^n }$。
$B$ 的列空间是 $C(B) = {Bx mid x in mathbb{R}^n } = {EAx mid x in mathbb{R}^n } = {E(Ax) mid Ax in C(A) }$。
这意味着 $C(B) = E(C(A))$。因为 $E$ 是可逆的,它将一个向量空间映射到另一个相同的向量空间,只是基可能不同。因此,映射前後的维度是相同的,即 $dim(C(A)) = dim(C(B))$。
所以,$rank_{col}(A) = rank_{col}(B)$。
同样,行空间:
$A^T$ 的列空间是 $C(A^T)$。行秩是 $dim(C(A^T))$。
$B^T = (EA)^T = A^T E^T$。
$C(B^T) = {B^T y mid y in mathbb{R}^m } = {A^T E^T y mid y in mathbb{R}^m } = {A^T (E^T y) mid E^T y in C(E^T) }$.
因为 $E$ 可逆,所以 $E^T$ 也可逆。因此 $C(E^T) = mathbb{R}^m$。
所以 $C(B^T) = A^T mathbb{R}^m = C(A^T)$。
这意味着 $A$ 的行空间和 $B$ 的行空间是相同的。
所以,$rank_{row}(A) = rank_{row}(B)$。
现在只需要证明行阶梯形矩阵 $B$ 的行秩等于列秩。
设 $B$ 的行秩为 $r$。这意味着有 $r$ 个线性无关的非零行向量,并且可以表示所有行向量。
这些非零行向量中,每一个都有一个主元。主元所在的列,除了主元本身,其他位置都是零(在简化行阶梯形矩阵中是这样,但行阶梯形矩阵也足够了)。
关键点在于: 主元所在的列是线性无关的,并且它们的个数恰好等于非零行的个数(也就是行秩)。
让我们考虑 $B$ 的主元列。设主元在 $(i_1, j_1), (i_2, j_2), dots, (i_r, j_r)$ 这些位置上,其中 $i_1 < i_2 < dots < i_r$ 是行索引,$j_1 < j_2 < dots < j_r$ 是列索引。
主元列 ${mathbf{b}_{j_1}, mathbf{b}_{j_2}, dots, mathbf{b}_{j_r}}$ 是线性无关的。
为什么?假设存在 $c_1, dots, c_r$ 不全为零,使得 $sum_{k=1}^r c_k mathbf{b}_{j_k} = mathbf{0}$。
考虑这个向量的第 $i_1$ 个分量。只有 $mathbf{b}_{j_1}$ 在第 $i_1$ 行有非零元素(主元),而其他主元列在第 $i_1$ 行的值是零(因为 $j_k > j_1$)。所以,第 $i_1$ 个分量就是 $c_1 cdot ( ext{主元值在 } mathbf{b}_{j_1}) = 0$。因为主元值非零,所以 $c_1=0$。
接着,我们看第 $i_2$ 个分量。因为 $c_1=0$,所以这个分量是 $c_2 cdot ( ext{主元值在 } mathbf{b}_{j_2}) = 0$。又因为主元值非零,所以 $c_2=0$。
依此类推,我们可以证明所有的 $c_k$ 都必须是零。因此,主元列是线性无关的。
主元列的个数就是 $r$ (行秩)。
所以,行阶梯形矩阵 $B$ 的列秩至少是 $r$。
那是不是所有列都可以表示成主元列的线性组合呢?
是的。在行阶梯形矩阵中,任何一个非主元列都可以表示成主元列的线性组合。
这是因为,对于非主元列的第 $i$ 行元素,该行是行阶梯形。如果 $B_{ik}$ 是非主元列的元素,它所在的那一行有一个主元 $B_{i, j_p}$。那么,我们就可以通过前面那个主元列 $mathbf{b}_{j_p}$ 来表示这一列的元素。
更直观地看:
我们从矩阵 $A$ 开始。
1. 行空间: 我们对 $A$ 进行初等行变换,得到行阶梯形矩阵 $B$。行变换不改变行空间,所以 $rank_{row}(A) = rank_{row}(B)$。在 $B$ 中,行秩就是非零行的个数。
2. 列空间: 初等行变换 $EA=B$ (E 可逆),这意味着列空间 $C(B)$ 是 $C(A)$ 经过一个可逆变换 $E$ 作用后的结果。因此,$dim(C(A)) = dim(C(B))$,即 $rank_{col}(A) = rank_{col}(B)$。
3. 行阶梯形矩阵 $B$ 的行秩等于列秩:
设 $B$ 的行秩为 $r$。这意味着 $B$ 有 $r$ 个线性无关的非零行。
在 $B$ 中,找到 $r$ 个主元。这些主元所在的列(主元列)是线性无关的。所以,列秩至少是 $r$。
考虑 $B$ 的任何一个非主元列。由于行阶梯形的结构,这一列的元素可以通过该行(或更前面的行)的主元列来表示。具体来说,如果一个非主元列的第 $i$ 行元素是 $x$,而该行的主元是 $p$ 所在的列,那么这个非主元列的这个位置的元素就可以通过调整主元列相应位置的系数来匹配。
举个例子:
```
B = [ 1 2 3 4 ]
[ 0 1 5 6 ]
[ 0 0 1 7 ]
[ 0 0 0 0 ]
```
主元在 $(1,1), (2,2), (3,3)$。主元列是第一、二、三列。行秩是3。
我们看看第四列 $[4, 6, 7, 0]^T$。
它能由前三列表示吗?
考虑第三列:$[3, 5, 1, 0]^T$。
如果第四列是前三列的线性组合,即 $c_1[1,0,0,0]^T + c_2[2,1,0,0]^T + c_3[3,5,1,0]^T = [4,6,7,0]^T$
对应到行:
第一行:$c_1 + 2c_2 + 3c_3 = 4$
第二行:$c_2 + 5c_3 = 6$
第三行:$c_3 = 7$
由第三行得 $c_3=7$。
代入第二行:$c_2 + 5(7) = 6 implies c_2 + 35 = 6 implies c_2 = 29$。
代入第一行:$c_1 + 2(29) + 3(7) = 4 implies c_1 58 + 21 = 4 implies c_1 37 = 4 implies c_1 = 41$。
所以,第四列 = $41 cdot ( ext{第一列}) 29 cdot ( ext{第二列}) + 7 cdot ( ext{第三列})$。
这表明非主元列是主元列的线性组合。
所以,列空间完全由主元列张成。主元列的个数就是行秩 $r$。因此,列秩也等于 $r$。
总结一下思路:
1. 初等行变换保持行空间和列向量间的线性关系。 这意味着行秩和列秩都不会因为初等行变换而改变。
2. 把矩阵化为行阶梯形。
3. 在行阶梯形矩阵中,行秩(非零行数)等于主元数。
4. 在行阶梯形矩阵中,主元列是线性无关的,并且它们的数量等于主元数。 任何非主元列都可以表示成主元列的线性组合。
5. 因此,行阶梯形矩阵的列秩(由主元列决定)也等于主元数。
由于行变换保持了原始矩阵的行秩和列秩,而行阶梯形矩阵的行秩又等于其列秩,所以原始矩阵的行秩就等于其列秩。
这个结论非常强大,它告诉我们无论你从行向量的角度还是列向量的角度去衡量矩阵的“非冗余性”,得到的结果都是一样的。这背后体现了线性代数中深刻的结构性一致性。