转载自link
矩阵的分解
矩阵的分解非常重要,很多时候我们都需要使用到矩阵的分解,这会给我们提供极大的方便,笔者学习这一类问题花费了很多时间,想要看懂这一章,需要先看{% post_link 矩阵的类型及性质 %}
矩阵的特征值分解
** 要求
n
∗
n
n*n
n∗n矩阵拥有
n
n
n个线性无关的特征向量**
矩阵的特征值分解指的是利用特征值构造的矩阵进行分解。特征值与特征向量是这样定义的
若
矩
阵
A
,
列
向
量
X
,
常
数
λ
满
足
A
X
=
λ
X
则
X
为
A
的
特
征
向
量
,
λ
为
A
的
特
征
值
\begin{aligned} &若矩阵A,列向量X,常数\lambda满足 \\&AX = \lambda X \\&则X为A的特征向量,\lambda为A的特征值 \end{aligned}
若矩阵A,列向量X,常数λ满足AX=λX则X为A的特征向量,λ为A的特征值
这里我们注意到如果
n
∗
n
n*n
n∗n的矩阵
A
A
A拥有
n
n
n个线性无关的特征向量,我们很容易就可以列出下面的式子:
A
X
1
=
λ
1
X
1
A
X
2
=
K
2
X
2
A
X
n
=
λ
n
X
n
每
个
式
子
都
是
列
向
量
,
我
们
把
这
些
式
子
横
着
排
列
成
矩
阵
[
A
X
1
,
A
X
2
.
.
.
A
X
n
]
=
[
λ
1
X
1
,
λ
2
X
2
.
.
.
λ
n
X
n
]
提
取
A
[
X
1
,
X
2
.
.
.
X
n
]
=
[
X
1
,
X
2
.
.
.
X
n
]
[
λ
1
,
,
.
.
.
,
,
λ
2
.
.
.
,
,
,
.
.
.
,
,
,
.
.
.
λ
n
]
A
=
[
X
1
,
X
2
.
.
.
X
n
]
[
λ
1
,
,
.
.
.
,
,
λ
2
.
.
.
,
,
,
.
.
.
,
,
,
.
.
.
λ
n
]
[
X
1
,
X
2
.
.
.
X
n
]
−
1
\begin{aligned} \\&AX_1 = \lambda_1X_1 \\&AX_2 = K_2X_2 \\&AX_n = \lambda_nX_n \\&每个式子都是列向量,我们把这些式子横着排列成矩阵 \\&[AX_1,AX_2...AX_n] = [\lambda_1X_1,\lambda_2X_2...\lambda_nX_n] \\&提取 \\& A[X_1,X_2...X_n] = [X_1,X_2...X_n]\left[\begin{matrix} &\lambda_1,&,&...&, \\&,&\lambda_2&...&, \\&,&,&...&, \\&,&,&...&\lambda_n \end{matrix}\right] \\& A = [X_1,X_2...X_n]\left[\begin{matrix} &\lambda_1,&,&...&, \\&,&\lambda_2&...&, \\&,&,&...&, \\&,&,&...&\lambda_n \end{matrix}\right][X_1,X_2...X_n]^{-1} \end{aligned}
AX1=λ1X1AX2=K2X2AXn=λnXn每个式子都是列向量,我们把这些式子横着排列成矩阵[AX1,AX2...AXn]=[λ1X1,λ2X2...λnXn]提取A[X1,X2...Xn]=[X1,X2...Xn]⎣⎢⎢⎡λ1,,,,,λ2,,............,,,λn⎦⎥⎥⎤A=[X1,X2...Xn]⎣⎢⎢⎡λ1,,,,,λ2,,............,,,λn⎦⎥⎥⎤[X1,X2...Xn]−1
这就是矩阵的特征值分解了
矩阵的QR分解
要求矩阵列满秩
我们通过Gram-Schmidt正交化手段,可以得到一个所有列向量正交的矩阵,这个过程叫矩阵的正交化
Gram-Schmidt在正交化矩阵A第i个列向量的时候,使用前i-1个已经正交化了的列向量对其进行消除分量,这个过程逆过来看待就是从正交化矩阵到原始矩阵的过程,原始矩阵到正交化矩阵的时候,原始矩阵的前i个列向量线性组合能够得到正交矩阵的第i个列向量,那么,正交矩阵的前i个向量线性组合能够得到原始矩阵的第i个列向量,我们把正交矩阵得到原始矩阵的组合方式用矩阵来表示的话,这个矩阵显然是一个上三角矩阵。那个正交矩阵叫做
Q
Q
Q,上三角矩阵叫做
R
R
R,我们就有了
A
=
Q
R
A=QR
A=QR,
Q
Q
Q其实就是Gram-Schmidt的结果,R不好计算,但是原理都懂,不好模拟,但是在A是方阵的时候,
R
R
R我们偷个懒,我们可以这样得到
R
=
Q
−
1
A
=
Q
T
A
R=Q^{-1}A=Q^TA
R=Q−1A=QTA
矩阵的LU分解
矩阵的LU分解要求,可逆方阵
即将矩阵A分解为LU,L是下三角矩阵,U是上三角矩阵,大家手动模拟一下就知道怎么处理了,这里开个头,A(0,0)只能有L(0,0)*U(0,0)得到,通常我们假设L(0,0)=1,然后类似于这种,再考虑L的第二行和R的第二列,这时候,所有的值都是固定的了。。。这个过程中如果A对角线出现了0,记录初等行互换就行了,这时候我们的行互换会构成一个矩阵P,即
P
A
=
L
U
PA = LU
PA=LU , 即
A
=
P
T
L
U
A = P^TLU
A=PTLU
矩阵的LR分解
无要求
通过初等行变化,将矩阵A变为Hermite型(阶梯矩阵)R,这个过程中,我们可以在A右边增广一个单位阵L,当算法结束的时候R是阶梯型,L也是,我们只保留R的非零行和L相应的列即可,最终
A
=
L
R
A=LR
A=LR,且L为列满秩,R为行满秩
矩阵的SVD分解
现在有个KaTeX parse error: Undefined control sequence: \* at position 2: n\̲*̲m的矩阵 A A A,注意到矩阵 A H A A^HA AHA是一个厄米特矩阵,且是半正定矩阵,由正规矩阵的性质我们不难得出一个式子 V H A H A V = D 2 V^HA^HAV = D_2 VHAHAV=D2,其中 V V V是 A H A A^HA AHA的特征向量构成的酉矩阵, D 2 D_2 D2是对角矩阵,根据半正定矩阵的性质,我们得出 D 2 D_2 D2中的元素非负,进而我们可以构建KaTeX parse error: Undefined control sequence: \* at position 2: n\̲*̲m矩阵 D D D, D D D只在对角线上的值非零,且 D ( i , i ) = D 2 ( i , i ) D(i,i)=\sqrt{D_2(i,i)} D(i,i)=D2(i,i),使得的KaTeX parse error: Undefined control sequence: \* at position 2: D\̲*̲D^H=D_2,进而我们得到了分解 V H A H A V = D H D V^HA^HAV = D^HD VHAHAV=DHD,对 A V AV AV来说他的前r个列向量间正交,取出他们 { v 1 , v 2 . . . , v r } \{v_1,v_2...,v_r\} {v1,v2...,vr},这些其实就是 A H A A^HA AHA的特征向量,对应的特征值是 σ i 2 \sigma_i^2 σi2,我们构造 u i = A v i σ i u_i = \frac{Av_i}{\sigma_i} ui=σiAvi得到了 { u 1 , u 2 , . . . u r } \{u_1,u_2,...u_r\} {u1,u2,...ur}加0扩充为 { u 1 , u 2 , . . . u n } \{u_1,u_2,...u_n\} {u1,u2,...un}这就是一个酉矩阵U,不难发现 A V = U D AV=UD AV=UD,即我们得到了分解 A = U D V H A = UDV^H A=UDVH,这就是 S V D SVD SVD分解。
方阵的极分解
根据矩阵的 S V D SVD SVD分解我们不妨设 P = U D U H P=UDU^H P=UDUH和 Q = U V H Q=UV^H Q=UVH,不难发现,现在 A = P Q A=PQ A=PQ,这是一个非常好的性质,P是半正定矩阵,Q是酉矩阵。