四个基本子空间与秩-零化度
上一章把“子空间、基、维数”这些词讲清楚了。本章把它们放回矩阵里。一个矩阵 A 不只是一个数字表,它同时带着四个子空间:列空间、零空间、行空间和左零空间。它们分别回答四类问题:哪些 b 可以写成 Ax,哪些 x 会被 A 压成 0,哪些约束真正独立,哪些输出关系必须自动满足。
如果 A 是一个 m×n 矩阵,那么列空间和左零空间住在 Rm,行空间和零空间住在 Rn。先分清它们住在哪里,再谈基和维数,会少走很多弯路。

四个基本子空间与秩-零化度的关系示意图。
四个空间分别在问什么
设 A 是一个 m×n 矩阵。矩阵乘法 Ax 接收 Rn 中的向量,输出 Rm 中的向量。因此,和输入有关的空间住在 Rn,和输出有关的空间住在 Rm。
列空间
列空间是 A 的列向量张成的子空间:
C(A)=span{a1,a2,…,an}⊆Rm
因为
Ax=x1a1+x2a2+⋯+xnan
所以列空间就是所有可能输出 Ax 的集合。方程 Ax=b 有解,当且仅当 b 落在 C(A) 中。

列空间与方程 Ax=b:b 必须在列空间里,方程才有解。
零空间
零空间是齐次方程的全部解:
N(A)={x∈Rn:Ax=0}
它描述输入空间中“看不见”的方向。沿着零空间方向移动,输出不会改变。若 v∈N(A),则
A(x+v)=Ax+Av=Ax
这句话在解非齐次方程时很有用:只要找到一个特解 xp,全部解就是
x=xp+v,v∈N(A)

零空间中的自由变量方向:沿 N(A) 的向量在变换 A 下都映射到 0。
行空间
行空间是 A 的行向量张成的子空间,也可以写成 AT 的列空间:
C(AT)⊆Rn
行空间住在输入空间里。每一行给出一个线性约束,例如
ai1x1+ai2x2+⋯+ainxn=bi
行空间收集的是这些约束真正能测到的方向。与行空间垂直的方向,正是零空间中的方向。
左零空间
左零空间是转置矩阵的零空间:
N(AT)={y∈Rm:ATy=0}
它也可以理解为所有满足 yTA=0 的向量 y。若 y∈N(AT),那么对任何 Ax=b 的可解右端 b,都有
yTb=yTAx=0
因此左零空间给出的是 b 必须满足的相容性条件。

行空间表示真正参与测量的约束方向;左零空间表示与列空间正交、满足 A^T y = 0 的输出关系。
一张表定位四个空间
从行最简形读出基
四个基本子空间不是只靠定义来理解的。给定一个具体矩阵,我们通常先做行化简,再从行最简形读出主元列、自由变量和非零行。
这一章用同一个矩阵贯穿:
A=101202011112
对它做行化简,得到
R=100200010110
主元列是第 1 列和第 3 列。第 2 个变量和第 4 个变量是自由变量。

原矩阵 A 与行最简形 R 对照,说明列空间基、行空间基和零空间基的读取方法。
行变换保持零空间和行空间不变,但一般会改变列空间中的具体列向量。因此,列空间的基要回到原矩阵 A 里取主元列,不能直接拿行最简形 R 的主元列代替。
列空间基
主元列告诉我们哪些原始列向量线性无关。因为主元列是第 1 列和第 3 列,所以列空间的一组基是原矩阵 A 的第 1 列和第 3 列:
⎩⎨⎧101,011⎭⎬⎫
于是
dimC(A)=2
行空间基
行变换不会改变行空间。行最简形中的非零行给出行空间的一组基:
{[1201],[0011]}
因此
dimC(AT)=2
零空间基
求零空间时,解 Rx=0 即可,因为 Ax=0 与 Rx=0 有相同解集。由 R 得到
x1+2x2+x4=0
x3+x4=0
令 x2=s,x4=t,则
x1=−2s−t,x3=−t
所以
x=s−2100+t−10−11
零空间的一组基是
⎩⎨⎧−2100,−10−11⎭⎬⎫
于是
dimN(A)=2
左零空间基
左零空间要解 ATy=0。设
y=y1y2y3
则
ATy=0
给出条件
y1+y3=0,y2+y3=0
令 y3=t,得到
y=t−1−11
左零空间的一组基是
⎩⎨⎧−1−11⎭⎬⎫
因此
dimN(AT)=1
秩、零化度与维数账本
矩阵 A 的秩是列空间的维数,也等于行空间的维数:
rank(A)=dimC(A)=dimC(AT)
零化度是零空间的维数:
nullity(A)=dimN(A)
如果 A 有 n 列,秩为 r,那么
rank(A)+nullity(A)=n
这就是秩-零化度关系。它说的是:输入变量一共有 n 个方向,其中 r 个方向被矩阵真正送进列空间,剩下 n−r 个方向落进零空间。

秩 + 零化度 = 变量总数:主元约束的方向与自由方向共同构成全部变量维度。
四个维数一起看
若 A 是 m×n 矩阵,秩为 r,那么四个基本子空间的维数是:
dimC(A)=r
dimN(A)=n−r
dimC(AT)=r
dimN(AT)=m−r
这四行很短,但信息很密。前两行把输入空间 Rn 分成“被看见的 r 维”和“被压没的 n−r 维”。后两行把输出空间 Rm 分成“真正能达到的 r 维”和“与所有输出都正交的 m−r 维”。
秩不是只数主元的技巧。它同时数列空间的维数、行空间的维数、独立约束的数量,以及矩阵真正能传递的自由方向数量。
约束与自由度的平衡
在一个方程组 Ax=b 中,n 个未知数并不等于 n 个自由度。独立约束越多,自由度越少。若秩为 r,则主元变量有 r 个,自由变量有 n−r 个。
对于齐次方程 Ax=0,自由变量直接给出零空间维数。对于非齐次方程 Ax=b,若它有解,那么自由变量仍然决定解集的维数:
x=xp+c1v1+⋯+cn−rvn−r
其中 v1,…,vn−r 是 N(A) 的一组基。
例题:完整读出四个空间
继续使用矩阵
A=101202011112
求四个基本子空间的一组基,并判断 Ax=b 何时有解。
先行化简矩阵。由第三行减去第一行再减去第二行,得到零行,所以行最简形是
R=100200010110主元列是第 1 列和第 3 列,因此秩为 2。
列空间基取原矩阵的主元列,而不是取 R 的主元列:
⎩⎨⎧101,011⎭⎬⎫这说明所有可达到的右端 b 都在这两个向量张成的平面中。
行空间基取 R 的非零行:
{[1201],[0011]}这两行代表两个独立约束,原矩阵第三行没有提供新的独立约束。
零空间由自由变量给出。令 x2=s,x4=t,可得
x=s−2100+t−10−11所以零空间是二维的,这也符合 n−r=4−2=2。
左零空间由 ATy=0 得到:
y=t−1−11因而 Ax=b 可解时必须满足
[−1−11]b1b2b3=0也就是
b3=b1+b2
这个例子里的第三个方程等于前两个方程相加,所以右端也必须满足同样关系。左零空间把这种“隐藏的相容条件”直接写了出来。
方程组的三种读法
同一个方程 Ax=b 可以从三个角度读。
列空间读法
列空间读法问:b 能不能由 A 的列向量线性组合得到?如果不能,方程无解。如果能,至少存在一个特解。
对于本章例子,b=(3,1,4)T 满足 4=3+1,所以有解。b=(3,1,5)T 不满足这个条件,所以无解。
零空间读法
零空间读法问:如果有一个解,是否还能沿某些方向继续移动而不改变输出?若 N(A) 只有零向量,解至多唯一。若 N(A) 有正维数,只要方程有解,就会有无穷多解。
本章例子中 dimN(A)=2,所以每一个可解的 Ax=b 都有两个自由参数。
左零空间读法
左零空间读法问:右端 b 是否满足所有相容条件?如果 y∈N(AT),则可解的 b 必须满足 yTb=0。
本章例子中,左零空间由 (−1,−1,1)T 张成,所以
−b1−b2+b3=0
这比反复消元更直接地指出了无解的原因。
“方程个数多”不一定代表约束多。真正重要的是独立约束的数量,也就是秩。重复方程、倍数方程和线性组合出来的方程不会增加秩。
应用:网络流量中的自由环路
网络流量是理解秩-零化度的好例子。把每条边的流量看成未知数,把每个节点的守恒条件写成方程:流入等于流出。若用一个关联矩阵 B 表示这些节点约束,那么
Bx=0
表示每个节点都平衡。

网络流量中的约束与自由度:节点平衡给出独立约束,环路流量体现秩-零化度中的自由度。
在一个连通网络中,所有节点守恒方程并不完全独立。因为把所有节点的“流入减流出”加起来,内部边会一正一负抵消,总和自动为 0。这会留下至少一个左零空间方向:所有节点方程相加的那条关系。
如果网络有 5 条边,而独立节点约束有 3 个,那么零空间维数是
5−3=2
这两个自由度可以理解为沿闭合环路绕行的流量。它们不会破坏节点平衡,只会改变边上的分配。
易错点与检查方法
列空间基不能直接取行最简形的列
行变换会改变列向量在 Rm 中的位置。行最简形只负责告诉我们哪些列是主元列。真正的列空间基,要回到原矩阵取对应列。
零空间要看自由变量
零空间维数等于自由变量个数。如果 n 列矩阵秩为 r,那么自由变量有 n−r 个,零空间就是 n−r 维。
左零空间不是“左边的零空间”
左零空间不是在矩阵左侧随便找东西,而是解
ATy=0
它住在输出空间 Rm 中,给出右端 b 的相容性条件。
先问空间住在哪里
做题时可以先写下四个维数:
C(A)⊆Rm,N(A)⊆Rn
C(AT)⊆Rn,N(AT)⊆Rm
如果一个基向量的长度和所在空间不一致,通常说明你把空间放错了。
练习
练习一:读秩和零化度
设
A=1000102−10
求 rank(A)、nullity(A) 和 N(A) 的一组基。
矩阵已经是行最简形,主元列是第 1 列和第 2 列,所以
rank(A)=2矩阵有 3 列,所以
nullity(A)=3−2=1由方程
x1+2x3=0,x2−x3=0令 x3=t,得到
x=t−211因此 N(A) 的一组基是
⎩⎨⎧−211⎭⎬⎫
练习二:用左零空间判断相容性
对本章的矩阵
A=101202011112
判断 Ax=b 在 b=(3,1,5)T 时是否有解。
本章已经求出左零空间由
−1−11张成。可解时必须有
−b1−b2+b3=0代入 b=(3,1,5)T,得到
−3−1+5=1不等于 0,所以方程无解。
练习三:四个空间的维数
设 A 是一个 5×8 矩阵,且 rank(A)=5。求四个基本子空间的维数,并说明 Ax=b 对任意 b∈R5 是否都有解。
这里 m=5,n=8,r=5。因此
dimC(A)=5dimN(A)=8−5=3dimC(AT)=5dimN(AT)=5−5=0因为列空间是 R5 的 5 维子空间,所以 C(A)=R5。因此对任意 b∈R5,方程 Ax=b 都有解。又因为零空间维数是 3,每个解集都有 3 个自由方向。
练习四:一眼看出依赖关系
设
B=123123
求 C(B)、N(B) 和 N(BT) 的一组基。
两列相同,所以列空间由第一列张成:
C(B)=span⎩⎨⎧123⎭⎬⎫解 Bx=0,得到
x1+x2=0所以
N(B)=span{[−11]}左零空间要求 BTy=0,也就是
y1+2y2+3y3=0令 y2=s,y3=t,则
y=s−210+t−301因此
N(BT)=span⎩⎨⎧−210,−301⎭⎬⎫
小结
四个基本子空间把矩阵的结构分成两对:输入空间里的行空间与零空间,输出空间里的列空间与左零空间。列空间决定 Ax=b 是否可能;零空间决定解的自由方向;行空间记录独立约束;左零空间记录右端必须满足的相容条件。
秩-零化度关系把这些信息压成一句话:
rank(A)+nullity(A)=n
这不是一个孤立公式,而是在说:一个矩阵能真正约束或传递多少方向,就会相应留下多少自由方向。会读这本“维数账本”,后面学习线性变换、投影、最小二乘和矩阵分解时会轻松很多。