常见的特殊矩阵及分解(二)

参考:矩阵分析、维基百科、百度百科

文章目录

        • 1、特征分解
          • 1.2 使用特征分解求矩阵的逆
          • 1.3 实对称矩阵一定可以对角化
        • 2、对角分解
        • 3、三角分解
          • 3.1 LU分解
          • 3.2 Cholesky分解
            • 3.2.1 LDL分解
            • 3.2.2 应用
        • 4、QR分解
        • 5、SVD分解


1、特征分解

Eigen decomposition),又叫谱分解(Spectral decomposition),是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法.
注意,只有对可对角化矩阵才可以施以特征分解.

A 是一个 N × N N×N N×N 的方阵,且有 N N N 个线性无关的特征向量 q i ( i = 1 , … , N ) q_{i} (i = 1, \dots, N) qi(i=1,,N) 。这样, A A A 可以被分解为
A = Q Λ Q − 1 \mathbf { A } = \mathbf { Q } \mathbf { \Lambda } \mathbf { Q } ^ { - 1 } A=QΛQ1
其中 Q Q Q N × N N×N N×N 方阵,且其第 i i i 列为 A A A 的特征向量 q i q_i qi Λ Λ Λ 是对角矩阵,其对角线上的元素为对应的特征值,也即 Λ i i = λ i \Lambda _{ii}=\lambda _{i} Λii=λi.
特征向量 q i    ( i = 1 , … , N ) q_{i}\,\,(i=1,\dots ,N) qi(i=1,,N)一般被单位化(但这不是必须的),未被单位化的特征向量组 v i    ( i = 1 , … , N ) v_i \,\, (i = 1, \dots, N) vi(i=1,,N), 也可以作为 Q Q Q 的列向量。这一事实可以这样理解 Q Q Q 中向量的长度都被 Q − 1 Q^{−1} Q1 抵消了.
注意,一般特征值分解时,我们会将 Q Q Q 单位化,即 Q Q Q 会变成正交矩阵(这个过程也叫做正交变换,相似变换一种特殊情况).

1.2 使用特征分解求矩阵的逆

若矩阵 A A A 可被特征分解并特征值中不含零,则矩阵 A A A 为非奇异矩阵,且其逆矩阵可以由下式给出
A − 1 = Q Λ − 1 Q − 1 \mathbf { A } ^ { - 1 } = \mathbf { Q } \mathbf { \Lambda } ^ { - 1 } \mathbf { Q } ^ { - 1 } A1=QΛ1Q1
如果, Q Q Q 单位化过,那么 Q − 1 = Q T Q^{-1}=Q^T Q1=QT.

1.3 实对称矩阵一定可以对角化

任意的 N × N N×N N×N 实对称矩阵都有 N N N 个线性无关的特征向量,并且这些特征向量都可以正交单位化而得到一组正交且模为 1 的向量。故实对称矩阵 A A A 可被分解成
A = Q Λ Q − 1 = Q Λ Q T \mathbf { A } = \mathbf { Q } \mathbf { \Lambda } \mathbf { Q } ^ { - 1 } = \mathbf { Q } \mathbf { \Lambda } \mathbf { Q } ^ {T} A=QΛQ1=QΛQT


2、对角分解

任何一个矩阵一定和约当矩阵相似,即存在可逆矩阵 P P P 使得 P − 1 A P = J P^{-1}AP=J P1AP=J,对于一个实对称矩阵,一定存在可逆矩阵 P P P 使得 P − 1 A P = Λ P^{-1}AP=\Lambda P1AP=Λ,对这个结论进行推广,正规矩阵一定可以对角化,即存在酉矩阵 U U U 使得
U H A U = Λ U^HAU= {\Lambda} UHAU=Λ
其中, Λ \Lambda Λ 的对角线为 A A A 的特征值.
A A A n n n 阶正规矩阵,其特征值为 λ 1 , λ 2 , . . . , λ n \lambda_1, \lambda_2, ..., \lambda_n λ1,λ2,...,λn,则

  • A A A 是厄米特矩阵的充要条件是: A A A 的特征值全是实数
  • A A A 是反厄米特矩阵的充要条件是: A A A 的特征值为零或纯虚数
  • A A A 是酉矩阵的充要条件是: A A A 的每个特征值 λ i \lambda_i λi 的模 ∣ λ i ∣ = 1 | \lambda_i |=1 λi=1

3、三角分解

当一个矩阵呈三角形时,求逆、求行列式、求解线性方程组等都很方便.
设矩阵 A ∈ C n × n A \in C^{n \times n} ACn×n,如果存在下三角矩阵 L ∈ C n × n L \in C^{n \times n} LCn×n 和上三角矩阵 R ∈ C n × n R \in C^{n \times n} RCn×n,(有时也使用 U U U 表示 R R R),使得
A = L R A=LR A=LR
则称 A A A 可以作三角分解.

1)对于可逆矩阵 A ∈ C n × n A \in C^{n \times n} ACn×n A A A 可以做三角分解的充要条件 A A A 的所有顺序主子式不为0.
因为矩阵 A A A 是可逆矩阵,所以分解得到下三角矩阵 L L L 和 上三角矩阵 R R R 都是可逆的.

2)对于不可逆矩阵 A ∈ C n × n A \in C^{n \times n} ACn×n,即如果 A A A 的前 r r r顺序主子式不为0,即 A A A r r r,则 A A A 可以做三角分解.
A r A_r Ar 进行三角分解,得 A r = L r R r A_r=L_rR_r Ar=LrRr,可以推出
A = [ A r A 12 A 21 A 22 ] = [ L r 0 B L r E n − r ] [ R r L r − 1 A 12 0 0 ] A=\begin{bmatrix} A_r& A_{12}\\ A_{21} & A_{22} \end{bmatrix}=\begin{bmatrix} L_r& 0\\ BL_r& E_{n-r} \end{bmatrix}\begin{bmatrix} R_r& L_r^{-1}A12\\ 0& 0 \end{bmatrix} A=[ArA21A12A22]=[LrBLr0Enr][Rr0Lr1A120]
显然,左三角矩阵是非奇异矩阵(由分块矩阵行列式得),而右三角矩阵是奇异矩阵.

唯一的三角分解
D D D 为对角线都不是0的对角矩阵,则
A = L R = ( L D ) ( D − 1 R ) A=LR=(LD)(D^{-1}R) A=LR=(LD)(D1R)
D D D 有无穷多个,所以就有无穷多个分解. 为了得到唯一的三角分解,需要对三角矩阵进行一些限制:
1)Doolittle分解 L L L 是对角线元素为1的下三角矩阵(单位上三角矩阵), R R R 为上三角矩阵
2)Crout分解 L L L 为上三角矩阵, R R R 是对角线元素为1的下三角矩阵(单位上三角矩阵
3)LDR分解 L , D , R L,D,R LDR 分别为单位下三角矩阵、对角矩阵、单位上三角矩阵

3.1 LU分解

对于方矩 A A A A A A 的 LU 分解是将它分解成一个下三角矩阵 L L L 与上三角矩阵 U U U 的乘积,也就是
A = L U A=LU A=LU

并不是每个可逆方阵都有 LU 分解。例如,从下式可知 a 11 = l 11 u 11 a_{11}=l_{11}u_{11} a11=l11u11,若 a 11 = 0 a_{11}=0 a11=0,则 l 11 l_{11} l11 u 11 u_{11} u11 等于 0,故 L L L U U U 是不可逆矩阵, A A A 必须也是不可逆矩阵。然而,存在着可逆矩阵 A A A 满足 a 11 = 0 a_{11}=0 a11=0,这些 A A A 就是没有 LU 分解的例子

A = [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] = [ l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 ] [ u 11 u 12 u 13 0 u 22 u 23 0 0 u 33 ] A = \left[ \begin{array} { l l l } { a _ { 11 } } & { a _ { 12 } } & { a _ { 13 } } \\ { a _ { 21 } } & { a _ { 22 } } & { a _ { 23 } } \\ { a _ { 31 } } & { a _ { 32 } } & { a _ { 33 } } \end{array} \right] = \left[ \begin{array} { c c c } { l _ { 11 } } & { 0 } & { 0 } \\ { l _ { 21 } } & { l _ { 22 } } & { 0 } \\ { l _ { 31 } } & { l _ { 32 } } & { l _ { 33 } } \end{array} \right] \left[ \begin{array} { c c c } { u _ { 11 } } & { u _ { 12 } } & { u _ { 13 } } \\ { 0 } & { u _ { 22 } } & { u _ { 23 } } \\ { 0 } & { 0 } & { u _ { 33 } } \end{array} \right] A=a11a21a31a12a22a32a13a23a33=l11l21l310l22l3200l33u1100u12u220u13u23u33
该问题可借由排列 A A A 的各列顺序来解决,最终会得到一个 A A A 的 PLU 分解.

PLU 分解
方阵 A 的 PLU 分解是将它分解成一个置换矩阵 P P P、一个下三角矩阵 L L L 与上三角矩阵 U U U 的乘积,也就是
A = P L U A=PLU A=PLU
所有的方阵都可以写成 PLU 分解的形式,由于左乘排列矩阵 P − 1 P^{-1} P1是在交换列的顺序,所以由 P − 1 A = L U P^{-1}A=LU P1A=LU 推得适当的交换 A A A 的行的顺序,即可将 A A A 做 LU 分解

LU分解的应用

  • 用于计算行列式,|A|=|L||R|
  • 求解线性方程组,使用替代法求解
  • 求逆矩阵
3.2 Cholesky分解

如果 A ∈ C n × n A \in C^{n \times n} ACn×n正定厄米特矩阵,则存在下三角矩阵 G G G 使得
A = G G H A=GG^H A=GGH
此时的 G G G 矩阵是一个下三角矩阵且所有对角元素均为正实数
当矩阵 A A A 是一个半正定的Hermite矩阵,若允许 L L L 的对角线元素为零,则 A {A} A 也存在上述形式的分解

3.2.1 LDL分解

经典Cholesky分解的一个变形是LDL分解,即
A = L D L ∗ \mathbf { A } = \mathbf { L D L } ^ { * } A=LDL
其中, L \mathbf {L} L 是一个单位下三角矩阵 D \mathbf {D} D 是一个对角矩阵,LDL分解与经典Cholesky分解的关系如下:
A = L D L ∗ = L D 1 2 ( D 1 2 ) ∗ L ∗ = L D 1 2 ( L D 1 2 ) ∗ \mathbf { A } = \mathbf { L D L } ^ { * } = \mathbf { L D } ^ { \frac { 1 } { 2 } } \left( \mathbf { D } ^ { \frac { 1 } { 2 } } \right) ^ { * } \mathbf { L } ^ { * } = \mathbf { L D } ^ { \frac { 1 } { 2 } } \left( \mathbf { L } \mathbf { D } ^ { \frac { 1 } { 2 } } \right) ^ { * } A=LDL=LD21(D21)L=LD21(LD21)

LDL变形如果得以有效运行,构造及使用时所需求的空间及计算的复杂性与经典Cholesky分解是相同的,但是可避免提取平方根.

某些不存在Cholesky分解的不定矩阵,也可以运行LDL分解,此时矩阵 D \mathbf {D} D 中会出现负数元素。因此人们更倾向于使用LDL分解。对于实数矩阵,该种分解的形式可被改写成
A = L D L T \mathbf { A } = \mathbf { L D L } ^ { \mathrm { T } } A=LDLT
此形式通常称为LDLT分解注意,它与实对称矩阵的特征分解密切相关,因为对于实对称矩阵,存在特征分解 A = Q Λ Q T \mathbf {A} =\mathbf {Q\Lambda Q} ^{\mathbf {T} } A=QΛQT. 区别是 L \mathbf {L} L 是下三角矩阵,而 Q \mathbf {Q} Q 是正交矩阵.

3.2.2 应用

1)线性方程求解
在求解最小二乘 A x = b Ax=b Ax=b 时,因为 A A A 是超定矩阵,所以先要转换成正定的厄米特矩阵才能使用Cholesky分解,即 A T A x = A T b A^TAx=A^Tb ATAx=ATb. 然后对 A T A A^TA ATA 进行经典的Cholesky分解或者LDLT分解(可避免开根运算),最后使用回代的方式求解.

Cholesky分解在求解线性方程组中的效率约两倍于LU分解

2)矩阵求逆
若欲对Hermite矩阵直接求逆,可以通过Cholesky分解,类似求解线性方程组一般求出逆矩阵,这需要 n 3 n^{3} n3次运算( 1 2 n 3 \frac{1}{2}n^{3} 21n3次乘法运算).
注意非Hermite矩阵 B \mathbf {B} B 也可以通过下例性质求逆,因为其中 B B ∗ \mathbf {BB} ^{*} BB 总是Hermite矩阵︰
B − 1 = B ∗ ( B B ∗ ) − 1 \mathbf { B } ^ { - 1 } = \mathbf { B } ^ { * } \left( \mathbf { B B } ^ { * } \right) ^ { - 1 } B1=B(BB)1


4、QR分解

分解成酉矩阵 Q Q Q 和一个上三角矩阵 R R R


5、SVD分解

任何一个矩阵(不限方阵)都可以实现SVD分解
参考《矩阵分析》,为什么A=UDV^T中的V每一列对应一个特征值的特征向量(P74)


<完>
@leatherwang


你可能感兴趣的:(算法)