下面的一系列分解,涉及了线性代数中的各个重要知识点:

关于求解方程组的分解:
关于特征值/特征向量/奇异值的分解:

应用:
当处理大型矩阵时,我们无法关注矩阵中的每一个元素,此时要做的就是采样
如果希望了解矩阵的列空间,一个自然的想法是直接对矩阵的列向量进行采样;
然而,更好的做法是随机采样:随机生成向量 x \mathbf {x} x(其元素值随机),然后将 A x \mathbf {Ax} Ax的结果作为对矩阵列空间的一个随机采样( A x \mathbf {Ax} Ax一定是列空间中的向量,并且是随机取的,能够更好的描述列空间)
对于上述的矩阵向量乘法 A x \mathbf{Ax} Ax,尝试所有可能的 x \mathbf{x} x,就是在尝试所有可能的列向量线性组合,由此能够得到列空间 C ( A ) C(\mathbf A) C(A)
例如上面的矩阵 A = [ 1 4 5 3 2 5 2 1 3 ] \mathbf A=\left[145325213
\right] A= 132421553 只有一列、二列是无关的,而第三列是前两列之和
因此, A \mathbf A A的秩为2,对应 C ( A ) C(\mathbf A) C(A)是二维平面,列空间只有两个基向量( A \mathbf A A的第一、二列是列空间的一组基);
从矩阵 A \mathbf A A的列向量组中,提取最大无关组,它们给出了矩阵列空间 C ( A ) C(\mathbf A) C(A)的一组基:
例如,矩阵 A = [ 1 4 5 3 2 5 2 1 3 ] \mathbf A=\left[145325213\right] A= 132421553 中,前两列构成最大无关组: C = [ 1 4 3 2 2 1 ] \mathbf C=\left[143221\right] C= 132421
那么,如何找出矩阵 A \mathbf A A的列向量的最大无关组?或者说,如何找出列空间的一组基?
这需要CR分解
矩阵
A
\mathbf A
A的满秩分解:
A
\mathbf A
A=列满秩矩阵
C
×
\mathbf C\times
C×行满秩矩阵
R
\mathbf R
R
A
=
C
R
\mathbf A=\mathbf C\mathbf R
A=CR
例如
[
1
4
5
3
2
5
2
1
3
]
=
[
1
4
3
2
2
1
]
[
1
0
1
0
1
1
]
\left[145325213
其中:
注意,上面的 C \mathbf C C完全取自 A \mathbf A A中真实存在的列向量,而 R \mathbf R R则不同: R \mathbf R R是行简化阶梯型
将 A \mathbf A A的各列视为 C \mathbf C C的列向量的线性组合, R \mathbf R R是相应的线性组合系数,则 R \mathbf R R中必然含有单位阵 I r \mathbf I_r Ir ps. 不考虑列的出现顺序的问题
若希望 R \mathbf R R也取自 A \mathbf A A中真实存在的行向量,则需要将式子修正为 A = C U R \mathbf A=\mathbf C\mathbf U\mathbf R A=CUR
总结:
证明:
A = C R \mathbf A=\mathbf C\mathbf R A=CR中, C \mathbf C C可视为保留了 A \mathbf A A列空间的一组基; R \mathbf R R可视为保留了 A \mathbf A A行空间的一组基,根据矩阵乘法规则, C \mathbf C C的列数= R \mathbf R R的行数
这就是说,行空间和列空间维数相等,行秩=列秩
CR分解的问题:
实际上,秩1矩阵是CR分解的特例:秩1矩阵=列向量 × \times ×行向量,秩=行秩=列秩=1
秩1矩阵是线性代数的基石Building Block,复杂的矩阵可以拆解为秩1矩阵
通常将矩阵乘法理解为行向量乘以列向量

下面介绍五个关键的矩阵分解时,均会使用这种“列向量乘行向量”的视角来进行解释。
后面将看到,这个视角也能解释LU、QR分解中为什么都出现了上三角矩阵
先研究齐次方程组 A x = 0 \mathbf A\mathbf x=\mathbf 0 Ax=0,再研究非齐次方程组 A x = b \mathbf A\mathbf x=\mathbf b Ax=b
LU分解来源于使用高斯消元法解方程的过程
消元法解方程的过程如下:核心是不断减少某一行方程中的未知量个数

消元的所有操作,都可以用矩阵乘法LU来完美表示,这就是LU分解
A
=
L
U
\mathbf A=\mathbf L\mathbf U
A=LU
ps. 如果矩阵可逆的,则消元的过程一切顺利,并且主元不为零
ps. 需要行交换时,变为
P
A
=
L
U
\mathbf P\mathbf A=\mathbf L\mathbf U
PA=LU

上图不仅是消元的过程,也是矩阵分解为一系列秩1矩阵的过程(列向量*行向量),正是因为每次消元“带走”了一行,才导致
A
=
L
U
\mathbf A=\mathbf L\mathbf U
A=LU的
U
\mathbf U
U为上三角矩阵
对于秩为r的m x n 矩阵 A ∈ R r m × n \mathbf A\in\mathbb R^{m\times n}_r A∈Rrm×n,有四个基本的子空间
为何零空间 N ( A ) N(\mathbf A) N(A)维度是 n − r n-r n−r?
方程组 A x = 0 \mathbf A\mathbf x=\mathbf 0 Ax=0看上去有 m m m行方程,但其中真正独立、“起作用”的只有 r r r个方程,剩余的 m − r m-r m−r个方程都是有效方程的线性组合、是多余的;
x \mathbf x x有 n n n个分量(未知数),这些未知数需要满足 r r r个独立约束(有效方程数),可认为 r r r个约束确定了 r r r个分量,那么剩下的 n − r n-r n−r个分量是自由变化的,即 A x = 0 \mathbf A\mathbf x=\mathbf 0 Ax=0的零空间维度 n − r n-r n−r
(对应消元后有 n − r n-r n−r个自由列,即零空间的 n − r n-r n−r个基向量)

四个子空间的关系:
为何行空间和零空间是一对?
因为对于 A x = 0 \mathbf A\mathbf x=\mathbf 0 Ax=0,若 A \mathbf A A的行向量有 n n n个分量,则 x \mathbf x x必也有 n n n个分量(做矩阵向量乘法时维度对齐),故零空间和行空间都是 R n \mathbf R^n Rn空间的子空间
原因:
对于方程组 A x = 0 \mathbf A\mathbf x=\mathbf 0 Ax=0,相当于 A \mathbf A A的每一行与 x \mathbf x x做点积,结果为0
这就是说, A \mathbf A A的任意行向量与 x \mathbf x x正交,从而行空间与零空间正交
由此,整个
R
n
\mathbf R^n
Rn空间和
R
m
\mathbf R^m
Rm空间,可以分别拆解为一对子空间;

实际上,这两对子空间(行空间与零空间、列空间与左零空间)之间同样有联系:此时需要将
A
\mathbf A
A视为一种映射算子,它将
n
×
1
n \times 1
n×1向量
x
\mathbf x
x映射为
m
×
1
m \times 1
m×1向量
A
x
\mathbf {Ax}
Ax(
A
x
\mathbf A\mathbf x
Ax就是用行空间/零空间的向量
x
r
o
w
\mathbf x_{row}
xrow对
A
\mathbf A
A的列向量做线性组合,结果位于列空间中)
正交Orthogonal可以理解为垂直Perpendicular的高级说法
向量的正交,就是内积为0:
x
T
y
=
0
\mathbf x^T\mathbf y=0
xTy=0
x
T
x
=
∥
x
∥
2
\mathbf x^T\mathbf x={\|\mathbf x \|}^2
xTx=∥x∥2 则对应了向量本身模长的平方
正交矩阵
Q
\mathbf Q
Q的列向量构成一组标准正交基(各个基向量相互正交,模长为1)

正交矩阵
Q
\mathbf Q
Q的性质:
图中①为正交矩阵,有 Q \mathbf Q Q满足 Q T Q = Q Q T = I \mathbf Q^T\mathbf Q=\mathbf Q\mathbf Q^T=\mathbf I QTQ=QQT=I;
而②并不是真正的正交矩阵(只有两列,不是方阵),但由于各个列向量标准正交,仍有 Q T Q = I \mathbf Q^T\mathbf Q=\mathbf I QTQ=I,而 Q Q T ≠ I \mathbf Q\mathbf Q^T\neq\mathbf I QQT=I
尽管如此, Q Q T \mathbf Q\mathbf Q^T QQT仍为一种投影矩阵(因为多次相乘,仍得到它本身)
对于矩阵 A \mathbf A A(前提:各个列向量线性无关),我们希望使其列向量 a 1 . . . a n \mathbf a_1...\mathbf a_n a1...an变为正交的列向量 q 1 . . . q n \mathbf q_1...\mathbf q_n q1...qn,且各个列向量的模长标准化为1,这就是Gram-Schmidt正交化
用矩阵形式表达,就是QR分解
A
=
Q
R
\mathbf A=\mathbf Q\mathbf R
A=QR,其中
R
=
Q
T
A
\mathbf R=\mathbf Q^T\mathbf A
R=QTA为上三角阵

例如,原来的列向量 a 1 = r 11 q 1 \mathbf a_1=r_{11}\mathbf q_1 a1=r11q1(第一个基向量,只需要标准化, r 11 = ∥ a 1 ∥ r_{11}=\|\mathbf a_1\| r11=∥a1∥)
而 a 2 = r 12 q 1 + r 22 q 2 \mathbf a_2=r_{12}\mathbf q_1+r_{22}\mathbf q_2 a2=r12q1+r22q2(原来的第二个基向量,是标准化后的第一个/第二个基向量的线性组合)
仍然可以从秩1矩阵的角度入手,将QR分解进一步分解为若干秩1矩阵

当
A
x
=
b
\mathbf A\mathbf x=\mathbf b
Ax=b的方程个数过多时(
m
>
n
m>n
m>n,行数大于未知量个数),意味着约束条件过多
此时,
A
\mathbf A
A的列空间只是整个
R
m
\mathbf R^m
Rm空间中的一个平面,然而
b
\mathbf b
b极有可能不在这个平面内,此时方程无解
我们将 b \mathbf b b投影到 A \mathbf A A的列空间内,从而寻找最优的近似解 x ^ \hat{\mathbf x} x^(此时误差 ∥ e ∥ 2 = ∥ b − A x ^ ∥ 2 \|\mathbf e\|^2=\|\mathbf b-\mathbf A\hat{\mathbf x}\|^2 ∥e∥2=∥b−Ax^∥2最小)
