本文内容取自于《Introduction to Linear Algebra(Gilbert Strang)》第3章和第4章,做为理解奇异值分解的基础知识。html
1. 矩阵
A的列空间(Column space)
考虑线性方程组
Ax=bweb
其中,
Am×n=[ p1,p2,⋯,pn ], pi∈Rm 为
m×1 列向量
x∈Rn,
b∈Rmapp
矩阵
A 的列空间
C(A),是由
A 中列向量
p1,p2,⋯,pn 的全部线性组合
(all combinations) 所组成的空间。或者说,列空间是由向量
p1,p2,⋯,pn 张成
(span)的空间 。svg
因为
pi∈Rm 是
m 维列向量,列空间
C(A)⊆Rmspa
以求解线性方程组
Ax=b为例:
.net
图1
若是右端向量
b∈C(A),线性方程组
Ax=b 有解;
若是右端向量
b∈/C(A),线性方程组
Ax=b 无解,只能取近似解(例如最小二乘解)
图片取自于《Introduction to Linear Algebra(Gilbert Strang)》Fig 3.2code
orm
2. 矩阵
A的零空间(Nullspace)
考虑线性方程组
Ax=0xml
其中,
Am×n,
x∈Rnhtm
矩阵
A 的零空间
N(A),是由知足线性方程组
Ax=0 的全部
x 所组成的空间。
因为
x∈Rn 是
n 维列向量,零空间
N(A)⊆Rn
3. 矩阵
A的行空间(Row space)
考虑线性方程组
Ax=b
其中,
Am×n=⎣⎢⎢⎢⎡q1q2⋮qm⎦⎥⎥⎥⎤, qiT∈Rn,即:
qi 为
1×n 行向量
x∈Rn,
b∈Rm
将矩阵
A 进行转置,那么
AT=[ q1T,q2T,⋯,qmT ]n×m,其中
qiT∈Rn
矩阵
A 的行空间其实是
AT 中的列空间
C(AT) ,是由
AT 中列向量
q1T,q2T,⋯,qmT 的全部线性组合
(all combinations) 所组成的空间。
因为
AT 中的列向量
qiT∈Rn 是
n 维列向量,行空间
C(AT)⊆Rn
4. 转置矩阵
AT的零空间(Left nullspace)
考虑线性方程组
ATy=0
其中,
Am×n→AT 为
n×m,
y∈Rm
矩阵
AT 的零空间
N(AT) 就是
left nullspace,是由知足线性方程组
ATy=0 的全部
y 所组成的空间。
之因此称为左零空间
,是由于:
ATy=0⟶yTA=0T,向量
y 移到了
A 的左边。
因为
y∈Rm 是
m 维列向量,左零空间
N(AT)⊆Rm
5. 空间之间的联系
5.1 空间维度与矩阵的秩
考虑子空间的维度
(dimension) 与矩阵的秩
(rank) 之间的关系:
(1) 矩阵的秩
(rank) 是矩阵主元
(pivot) 的个数
(2) 子空间的维度
(dimension) 是该空间基向量
(basis vector) 的个数
假设矩阵
Am×n 的秩为
r≤min(m,n),能够构造出
4 种子空间:列空间
C(A)、零空间
N(A)、行空间
C(AT)、左零空间
N(AT),那么:
- 列空间
C(A) 和行空间
C(AT) 的维度都是
r
因为矩阵
A 的秩为
r,矩阵
A 能够经过初等行、列变换,化简为一个包含
r 阶单位阵的形式。也就是说,不管是从行向量、仍是从列向量来看,线性无关的(行或列)向量的个数都是
r。
以一个矩阵
A3×5 为例,主元
(pivot)能够有多种选择:
m=3n=5r=2A=⎣⎡100300500010720⎦⎤←←pivot rows 1 and 2 pivot columns 1 and 4
↑ ↑
显然,不管从行向量、仍是从列向量看,线性无关的(行或列)向量的个数都是
2,并且第1列和第4列构成了列空间
C(A)的基向量,第1行和第2行构成了行空间
C(AT)的基向量。
- 零空间
N(A) 的维度
n−r
仍然以矩阵
A 为例,求解
Ax=0,当选择
x1,x4 为主元
(pivot)变量时,剩下的
x2,x3,x5 就为自由
(free)变量(没有
pivot 在这三列,设定其中一个为
1,其他为
0),可获得零空间
N(A) 的
3 个线性无关的基向量为:
s2=⎣⎢⎢⎢⎢⎡−31000⎦⎥⎥⎥⎥⎤,s3=⎣⎢⎢⎢⎢⎡−50100⎦⎥⎥⎥⎥⎤,s5=⎣⎢⎢⎢⎢⎡−700−21⎦⎥⎥⎥⎥⎤
此时,矩阵
A 的零空间为:
N(A)={x∣x=x2s2+x3s3+x5s5}
归纳起来,因为主元
(pivot)变量的个数为秩
r,那么
x∈Rn 中剩下的自由
(free)变量个数就为
n−r,这个
n−r 个自由
(free)变量构成了零空间
N(A) 的(线性无关的)基向量。
- 左零空间
N(AT) 的维度为
m−r
AT=⎣⎢⎢⎢⎢⎡135070001200000⎦⎥⎥⎥⎥⎤pivot rows 1 and 4 pivot columns 1 and 2
仍然以矩阵
A 为例,求解
ATy=0,当选择
y1,y2 为主元
(pivot)变量时,剩下的
y3 就为自由
(free)变量(没有
pivot 在这列,设定其值为
1),可获得零空间
N(AT) 的基向量为:
s3=[0,0,1]T
此时,矩阵
AT 的零空间为:
N(AT)={y∣y=y3s3},也就是
N(AT)=[0,0,y3]T
归纳起来,因为主元
(pivot)变量的个数为秩
r,那么
y∈Rm 中剩下的自由
(free)变量个数就为
m−r,这个
m−r 个自由
(free)变量构成了零空间
N(AT) 的(线性无关的)基向量。
图2 图片取自于《Introduction to Linear Algebra(Gilbert Strang)》Fig 3.5
5.2 正交性
结论1 行空间
C(AT) 与零空间
N(A) 正交,即:
C(AT)⊥N(A)
零空间
N(A) 是行空间
C(AT) 在
Rm 中的正交补
Ax=⎣⎢⎢⎢⎢⎢⎢⎡row 1⋮row i⋮row m⎦⎥⎥⎥⎥⎥⎥⎤⎣⎡x⎦⎤=⎣⎢⎢⎢⎢⎢⎢⎡0⋮0⋮0⎦⎥⎥⎥⎥⎥⎥⎤⟵⟵⟵(row 1)⋅x=0(row i)⋅x=0(row m)⋅x=0
其中,
row i 是
Am×n 中第
i 行的
1×n 行向量。
显然,
A 中的每一行,与零空间
N(A) 中的任一元素
x 正交。
结论2 列空间
C(A) 与左零空间
N(AT) 正交,即:
C(A)⊥N(AT)
左零空间
N(AT) 是列空间
C(A) 在
Rn 中的正交补
ATy=⎣⎢⎢⎢⎢⎢⎢⎡(column 1)T⋮(column i)T⋮(column n)T⎦⎥⎥⎥⎥⎥⎥⎤⎣⎡y⎦⎤=⎣⎢⎢⎢⎢⎢⎢⎡0⋮0⋮0⎦⎥⎥⎥⎥⎥⎥⎤⟵⟵⟵(column 1)T⋅y=0(column i)T⋅y=0(column n)T⋅y=0
其中,
column i 是
Am×n 中第
i 列的
m×1 列向量。
显然,
A 中的每一列,与零空间
N(AT) 中的任一元素
y 正交。
图3图片取自于《Introduction to Linear Algebra(Gilbert Strang)》Fig 4.3
由图
3 可知,
∀ x∈Rn, x=xr+xn,也就是
Rn 的任一贯量
x 能够分解为“行空间份量”
xr∈C(AT) 和 “零空间份量”
xn∈N(A),知足
xr⊥xn。
显然,“零空间份量”
xn 知足
Axn=0
“行空间份量”
xr 知足
Ax=Axr=b,∀ b∈C(A)
结论3 可获得如下结论:
(1) 每一个
x∈Rn 通过线性变换
Am×n 以后,都会进入到矩阵
A 的列空间
C(A)∈Rm
(2) 由
Axr=b 可知,矩阵
A 的列空间
C(A) 中的向量
b,实际上来自于矩阵
A 的行空间
C(AT)∈Rn
(3) 对于每一个
b∈C(A),知足
Axr=b 所对应的“行空间份量”
xr 在行空间
C(AT)中是惟一的
结论4 对于一个秩为
r 的矩阵
Am×n,有一个
r×r 的可逆方阵隐藏在其中,只要去掉图
3 中的两个零空间
N(A) 和
N(AT),也就是直接描述方程
Axr=b 。
以一个矩阵
A3×5 为例:
m=3n=5r=2A=⎣⎡300050000000000⎦⎤ 包含了子矩阵:
A^=[3005]
矩阵
A 中、除子矩阵以外的其余
11 个
0 实际上构成了两个零空间。
5.3 举例
结论4的整个示例过程
以矩阵
A3×5 为例:
m=3n=5r=2A=⎣⎡300050000000000⎦⎤ 包含了子矩阵:
A^=[3005]
从线性变换的角度来看:
(1) 考虑线性变换
Ax=b,矩阵
A3×5:R5→R3 将一个向量
x∈R5 变换成向量
b∈R3
(2) 矩阵
A3×5 变换的结果,其实是由子变换
A^:R2→R2 完成,即:将一个“行空间份量”向量
xr∈C(AT)(实际维度为
R2) 变换成“列空间向量”
b^∈C(A)(实际维度为
R2)
Ax=A(xr+xn)=b+0=b
这说明了,矩阵
A3×5 将其(实际维度为
3 的)零空间
N(A) 中的全部向量都变换为
0;将其(实际维度为
2 的)行空间
C(AT) 中的全部向量都变换到其(实际维度为
2 的)列空间
C(A) 中
也就是说,矩阵
A3×5:R5→R3 的变换过程,其实是会发生在子空间的变换
A^:R2→R2
(3) 矩阵
A3×5 变换相比子变换
A^2×2 多出来的许多零,都是两个零空间的做用
- 首先,考虑
x∈Rn
Ax=⎣⎡300050000000000⎦⎤⎣⎢⎢⎢⎢⎡x1x2x3x4x5⎦⎥⎥⎥⎥⎤=0
⟹ s3=⎣⎢⎢⎢⎢⎡00100⎦⎥⎥⎥⎥⎤,s4=⎣⎢⎢⎢⎢⎡00010⎦⎥⎥⎥⎥⎤,s5=⎣⎢⎢⎢⎢⎡00001⎦⎥⎥⎥⎥⎤
⟹ 零空间
N(A)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧xn=⎣⎢⎢⎢⎢⎡00x3x4x5⎦⎥⎥⎥⎥⎤⎭⎪⎪⎪⎪⎬⎪⎪⎪⎪⎫,其实是
R3
行空间
C(AT)=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧xr=⎣⎢⎢⎢⎢⎡3x15x2000⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡x1′x2′000⎦⎥⎥⎥⎥⎤,x1,x2∈R⎭⎪⎪⎪⎪⎬⎪⎪⎪⎪⎫,其实是
R2
显然,
xr⊥xn,并且
C(AT)∪N(A)=R5 (n=5)
所以,线性方程组
Ax=A⎣⎢⎢⎢⎢⎡x1x2x3x4x5⎦⎥⎥⎥⎥⎤=A(xr+xn)=A⎝⎜⎜⎜⎜⎛⎣⎢⎢⎢⎢⎡x1x2000⎦⎥⎥⎥⎥⎤+⎣⎢⎢⎢⎢⎡00x3x4x5⎦⎥⎥⎥⎥⎤⎠⎟⎟⎟⎟⎞=b
其实是:
Axr=⎣⎡300050000000000⎦⎤⎣⎢⎢⎢⎢⎡x1x2000⎦⎥⎥⎥⎥⎤=b
去掉
xr∈Rn 中的
3 个无效维度,保留
2 个有效维度,那么矩阵
A 中保留下来的
2×2 子矩阵就是
A^。所以,
A3×5xr 实际上就是
A^2×2[x1x2]
- 另外一方面,考虑
b∈Rm
ATy=⎣⎢⎢⎢⎢⎡300000500000000⎦⎥⎥⎥⎥⎤⎣⎡y1y2y3⎦⎤=0
⟹ s3=⎣⎡001⎦⎤
⟹ 左零空间
N(AT)=⎩⎨⎧y=⎣⎡00y3⎦⎤,y3∈R⎭⎬⎫,即
R1
而列空间
C(A)=⎩⎨⎧y=⎣⎡3x15x20⎦⎤=⎣⎡x1′x2′0⎦⎤,x1,x2∈R⎭⎬⎫,即
R2
显然,
C(A)∪N(AT)=R3 (m=3)
去掉
b∈Rm 中的
1 个无效维度,保留
2 个有效维度:向量
b 实际上就是
b^=[b1b2]
- 去掉两个子空间
N(A) 和
N(AT) 以后,也就是:
A^[x1x2]=b^=[b1b2]
这就说明了,线性变换
A3×5x=b的结果,其实是由子变换
A^:R2→R2 完成