[线性代数] - 矩阵的分解总结

特征值·特征向量

假设λ1,λ2,,λn\lambda_1, \lambda_2, \cdots, \lambda_nnn阶方阵AA的特征值,x1,x2,,xnx_1, x_2, \cdots, x_n是对应的特征向量,并且他们线性无关,称

Λ=[λ1000λ2000λn]\Lambda = \begin{bmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \end{bmatrix}

AA特征值矩阵,称

S=[x1x2xn]S = \begin{bmatrix} \mathbf{x}_1 & \mathbf{x}_2 & \cdots & \mathbf{x}_n \end{bmatrix}

AA特征向量矩阵

特性向量之间线性无关,因此SS是非奇异矩阵,SS可逆

对角化

AS=A[x1,x2,,xn]=[Ax1,Ax2,,Axn]=[λ1x1,λ2x2,,λnxn]=[x1,x2,,xn][λ1000λ2000λn]=SΛ\begin{aligned} AS &= A\begin{bmatrix}\mathbf{x}_1, \mathbf{x}_2, \cdots, \mathbf{x}_n\end{bmatrix} \\ &= \begin{bmatrix} A\mathbf{x}_1, A\mathbf{x}_2, \cdots, A\mathbf{x}_n \end{bmatrix} \\ &=\begin{bmatrix} \lambda_1x_1, \lambda_2x_2, \cdots, \lambda_nx_n \end{bmatrix} \\ &=\begin{bmatrix} x_1, x_2, \cdots, x_n \end{bmatrix}\begin{bmatrix} \lambda_1 & 0 & \cdots & 0 \\ 0 & \lambda_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \lambda_n \end{bmatrix} \\ &= S\Lambda \end{aligned}

因为上方提及SS可逆,则

S1AS=S1SΛS^{-1}AS = S^{-1}S\Lambda

化简后即可得到

S1AS=ΛA=SΛS1\begin{aligned}S^{-1}AS = \Lambda\\A = S\Lambda S^{-1}\end{aligned}

以上即为AA对角化只有A的特性向量线性无关的时候,才是可对角化的

矩阵的幂

由上方的对角化,可以得到

Λ2=S1ASS1AS=S1A2S\Lambda^2 = S^{-1} A \cancel{S S^{-1}} A S = S^{-1} A^2 S

进一步推导后,可以得到

Λn=S1AnSAn=SΛnS1\begin{aligned}\Lambda^n = S^{-1}A^nS\\A^n = S\Lambda^n S^{-1}\end{aligned}

正交对角化

设上方AA为对称矩阵,由对称矩阵的性质得知,它的特征向量互相正交,取一组正交基底向量P=[p1,p2,,pn]P = \begin{bmatrix}\mathbf{p}_1, \mathbf{p}_2, \cdots, \mathbf{p}_n\end{bmatrix},由正交矩阵的性质,得知P1=PTP^{-1} = P^T,即有

A=PΛP1=PΛPTA = P\Lambda P^{-1} = P\Lambda P^T

一个n×nn \times n的矩阵可正交对角化的充分必要条件时AT=AA^T = A

主轴定理

由于PP的正交向量,则PP的列向量是Rn\mathbf{R}^n的一个基底,且是一个基变换矩阵,即任意标准基底下的向量x\mathbf{x},可以表示为PP下的向量y\mathbf{y},即

x=Py\mathbf{x} = P\mathbf{y}

  • 上述叫做变量变换
  • 特别的,如果PP是正交矩阵,则为正交变量变换

将此变换带入到二次型里面,可以得到

xTAx=(Py)TA(Py)=yT(PTAP)y=yTΛy=[y1y2yn][λ10λ20λn][y1y2yn]=λ1y12+λ2y22++λnyn2\begin{aligned} \mathbf{x}^TA\mathbf{x} &= (P\mathbf{y})^TA(P\mathbf{y}) \\ &= \mathbf{y}^T(P^TAP)\mathbf{y} \\ &= \mathbf{y}^T\Lambda\mathbf{y} \\ \\ &=\begin{bmatrix} y_1 & y_2 & \cdots & y_n \end{bmatrix} \begin{bmatrix} \lambda_1 & & & 0 \\ & \lambda_2 & & \\ & & \ddots & \\ 0 & & & \lambda_n \end{bmatrix} \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} \\ &= \lambda_1 y_1^2 + \lambda_2 y_2^2 + \cdots + \lambda_n y_n^2 \end{aligned}

谱分解

AA的特征值集合可以称为AA的谱,假设AAn×nn \times n的对称矩阵

  • AAnn个实特征值
  • AA的特征值λ\lambda对应的特征空间的维数等于特征方程的根为该λ\lambda时的重数
  • AA的所有特征向量空间互相正交
  • AA可以正交对角化

称为AA的谱定理,谱分解为

A=PΛPT=[p1pn][λ100λn][p1TpnT]=λ1p1p1T+λ2p2p2T++λnpnp1n\begin{aligned} A &= P \Lambda P^T \\ &= \begin{bmatrix} \mathbf{p}_1 & \cdots & \mathbf{p}_n \end{bmatrix} \begin{bmatrix} \lambda_1 & & 0 \\ & \ddots & \\ 0 & & \lambda_n \end{bmatrix} \begin{bmatrix} \mathbf{p}_1^T \\ \vdots \\ \mathbf{p}_n^T \end{bmatrix} \\ &= \lambda_1 \mathbf{p}_1 \mathbf{p}_1^T + \lambda_2 \mathbf{p}_2 \mathbf{p}_2^T + \cdots + \lambda_n \mathbf{p}_n \mathbf{p}_1^n \end{aligned}

pipiT\mathbf{p}_i\mathbf{p}_i^T为秩一矩阵。

LU分解

LU分解实际上是高斯消元的另一种看法。即于任意的nn阶方阵AA,存在LL是单位下三角矩阵,UU是上三角矩阵,使得

A=LUA = LU

这里对矩阵AA只要求是方阵

LU分解原理

对于任意的nn阶方阵AA,存在初等矩阵EijE_{ij},利用高斯消元,可以将AA变为上三角矩阵,假设3阶矩阵,则

E32E31E21A=UE_{32}E_{31}E_{21}A = U

于是有

A=E321E311E211UA = E^{-1}_{32}E^{-1}_{31}E^{-1}_{21}U

E321E311E211=LE^{-1}_{32}E^{-1}_{31}E^{-1}_{21} = L,则A=LUA = LU,可以发现LL必定为单位下三角矩阵

  • 如果方阵AA可逆,并且有三角分解,则该分解是唯一的
  • AAnn阶矩阵的前r(A)r(A)个顺序主子式均非零,则AA存在三角分解,但不唯一

LU分解步骤

333*3为例

[a11a12a13a21a22a23a31a32a33]=[100l2110l31l321][u11u12u130u22u2300u33]=[100l2110l31l321][a11a12a130u22u2300u33]\begin{aligned} \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix} &= \begin{bmatrix} 1 & 0 & 0 \\ l_{21} & 1 & 0 \\ l_{31} & l_{32} & 1 \end{bmatrix} \begin{bmatrix} u_{11} & u_{12} & u_{13} \\ 0 & u_{22} & u_{23} \\ 0 & 0 & u_{33} \end{bmatrix} \\ &= \begin{bmatrix} 1 & 0 & 0 \\ l_{21} & 1 & 0 \\ l_{31} & l_{32} & 1 \end{bmatrix} \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ 0 & u_{22} & u_{23} \\ 0 & 0 & u_{33} \end{bmatrix} \end{aligned}

可以得出

a21=u11l21a31=u11l31a22=l21u12+u22a23=l21u12+u23a32=l31u12+l32u22a33=l31u13+l32u23+u33\begin{aligned} a_{21} &= u_{11} * l_{21} \\ a_{31} &= u_{11} * l_{31} \\ \\ a_{22} &= l_{21} u_{12} + u_{22} \\ a_{23} &= l_{21} u_{12} + u_{23} \\ \\ a_{32} &= l_{31}u_{12} + l_{32}u_{22} \\ a_{33} &= l_{31}u_{13} + l_{32}u_{23} + u_{33} \end{aligned}

Chelesky分解

Cchelesky分解的对象是:实正定矩阵
正定矩阵一般默认是对称的。实正定矩阵AA必存在三角分解A=LUA=LU,且存在唯一的对角元素均为正的下三角矩阵CC,使得

A=LLTA = LL^T

[a11a12a13a21a22a23a31a32a33]=[a00bc0def][abd0ce00f]=[a2abadabb2+c2bd+ceadbd+ced2+e2+f2]\begin{aligned} \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix} &= \begin{bmatrix} a & 0 & 0 \\ b & c & 0 \\ d & e & f \end{bmatrix} \begin{bmatrix} a & b & d \\ 0 & c & e \\ 0 & 0 & f \end{bmatrix} \\ &= \begin{bmatrix} a^2 & ab & ad \\ ab & b^2 + c^2 & bd + ce \\ ad & bd + ce & d^2 + e^2 + f^2 \end{bmatrix} \end{aligned}

Chelesky分解(LDL分解)

CTAC=diag(d1,d2,,dn)C^TAC = diag(d_1, d_2, \cdots, d_n)

  • CC不一定实正交矩阵
  • d1,d2,,dnd_1, d_2, \cdots, d_n不一定是AA的特征值
  • 如果CC是正交矩阵,则did_i为特征值

任意实对称矩阵可以同时进行相同行和列的初等变换化为对角形

Chelesky分解原理

初等变换,就是对矩阵乘上初等矩阵

PiTAPiPkTP2TP1TAP1P2Pn\begin{gathered} P^T_iAP_i \\ \Downarrow \\ P^T_k \cdots P^T_2P^T_1\color{red}A\color{black}P_1 P_2 \cdots P_n\end{gathered}

C=P1P2PnC=P_1 P_2 \cdots P_n,则

CTACC^TAC

为了得到CC,可以对单位矩阵进行同等操作

(AI)(CTACC)\begin{pmatrix} A \\ I \end{pmatrix} \longrightarrow \begin{pmatrix} C^TAC \\ C \end{pmatrix}

LR分解

又称满秩分解,其对象为:m×nm \times n矩阵,假设其秩为rr,存在秩同样为rr两个矩阵LL(列满秩)和RR(行满秩),使得

A=LRA = LR

  • 满秩分解不唯一:假设存在rr阶可逆方阵DD,则A=FG=F(DD1)G=(FD)(D1G)=FGA=FG=F(DD^{-1})G=(FD)(D^{-1}G)=F'G'
  • 任何非零矩阵一定存在满秩分解

LR分解原理

假设存在初等变换矩阵BB,使得

BA=(R0)BA = \begin{pmatrix} R \\ 0 \end{pmatrix}

A=B1(G0)=(LS)(R0)=LR\begin{aligned} A &= B^{-1}\begin{pmatrix} G \\ 0 \end{pmatrix} \\ &= (L|S)\begin{pmatrix} R \\ 0 \end{pmatrix} \\ &= LR \end{aligned}

QR分解

矩阵可逆也不一定存在三角分解,矩阵正交(Q)三角(R)分解是对任何可逆矩阵都存在的理想分解。其原理是斯密特正交化,设ACn×nA \in \mathbb{C}^{n\times n}为满秩的,则存在唯一的酉矩阵QQ和对角线元素均为正的上三角矩阵RR,使得

  • QQ是标准正交矩阵
  • RR是一个上三角矩阵

A=QRA = QR

  • 对于实数矩阵,这里的酉矩阵类比为正交矩阵Q即可
  • 矩阵A可以是非方阵,只需要列满秩(列向量是线性无关)
  • 分解是唯一的

奇异值分解

参见:[线性代数] - 奇异值分解

总结

分解 公式 对象
谱分解 λ1p1p1T+λ2p2p2T++λnpnp1n\lambda_1 \mathbf{p}_1 \mathbf{p}_1^T + \lambda_2 \mathbf{p}_2 \mathbf{p}_2^T + \cdots + \lambda_n \mathbf{p}_n \mathbf{p}_1^n 对称矩阵
LU分解 A=LU=下三角×上三角A=LU = \text{下三角}\times\text{上三角} 方阵
Chelesky分解 CTAC=diag(d1,d2,,dn)C^TAC = diag(d_1, d_2, \cdots, d_n) 实正定矩阵
LR分解 A=LR=列满秩×行满秩A=LR=\text{列满秩}\times\text{行满秩} m×nm\times n矩阵
QR分解 A=QR=标准正交矩阵×上三角A=QR=\text{标准正交矩阵}\times\text{上三角} 满秩方阵
奇异值分解 A=UΣVT=左奇异向量A右奇异向量A=U\Sigma V^T = \text{左奇异向量}A\text{右奇异向量} 所有矩阵
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import numpy as np
import scipy.linalg

A = np.array([
[1,3,5],
[3,13,23],
[5,23,42],
])

# Chelesky
L = np.linalg.cholesky(A)
print("Chelesky: ", end='')
print(np.allclose(A, L.dot(L.T)))

A = np.array([
[3,1,2],
[1,2,3],
[2,3,1],
])

# LU
P, L, U = scipy.linalg.lu(A)
print("LU: ", end='')
print(np.allclose(A, np.linalg.inv(P).dot(L).dot(U)))

# QR
Q, R = scipy.linalg.qr(A)
print("QR: ", end='')
print(np.allclose(A, Q.dot(R)))

# SVD
U, sigma, V = np.linalg.svd(A)
S = np.zeros(A.shape)

for i in range(sigma.shape[0]):
S[i][i] = sigma[i]

print("SVD: ", end='')
print(np.allclose(A, U.dot(S).dot(V)))