特征值·特征向量
假设λ1,λ2,⋯,λn为n阶方阵A的特征值,x1,x2,⋯,xn是对应的特征向量,并且它们线性无关,称
Λ=λ10⋮00λ2⋮0⋯⋯⋱⋯00⋮λn
为A的特征值矩阵,称
S=[x1x2⋯xn]
为A的特征向量矩阵
特征向量之间线性无关,因此S是非奇异矩阵,S可逆
对角化
AS=A[x1,x2,⋯,xn]=[Ax1,Ax2,⋯,Axn]=[λ1x1,λ2x2,⋯,λnxn]=[x1,x2,⋯,xn]λ10⋮00λ2⋮0⋯⋯⋱⋯00⋮λn=SΛ
因为上方提及S可逆,则
S−1AS=S−1SΛ
化简后即可得到
S−1AS=ΛA=SΛS−1
以上即为A的对角化,只有A的特征向量线性无关的时候,才是可对角化的
矩阵的幂
由上方的对角化,可以得到
Λ2=S−1ASS−1AS=S−1A2S
进一步推导后,可以得到
Λn=S−1AnSAn=SΛnS−1
正交对角化
设上方A为对称矩阵,由对称矩阵的性质得知,它的特征向量互相正交,取一组正交基底向量P=[p1,p2,⋯,pn],由正交矩阵的性质,得知P−1=PT,即有
A=PΛP−1=PΛPT
一个n×n的实矩阵可正交对角化的充分必要条件是AT=A
主轴定理
由于P的列向量互相正交,则P的列向量是Rn的一个基底,且是一个基变换矩阵,即任意标准基底下的向量x,可以表示为P下的向量y,即
x=Py
- 上述叫做变量变换
- 特别的,如果P是正交矩阵,则为正交变量变换
将此变换代入到二次型里面,可以得到
xTAx=(Py)TA(Py)=yT(PTAP)y=yTΛy=[y1y2⋯yn]λ10λ2⋱0λny1y2⋮yn=λ1y12+λ2y22+⋯+λnyn2
谱分解
A的特征值集合可以称为A的谱,假设A是n×n的对称矩阵
- A有n个实特征值
- A的特征值λ对应的特征空间的维数等于特征方程的根为该λ时的重数
- A的所有特征向量空间互相正交
- A可以正交对角化
称为A的谱定理,谱分解为
A=PΛPT=[p1⋯pn]λ10⋱0λnp1T⋮pnT=λ1p1p1T+λ2p2p2T+⋯+λnpnpnT
pipiT为秩一矩阵。
LU分解
LU分解实际上是高斯消元的另一种看法。即对于顺序主子式均不为零的n阶方阵A,存在L是单位下三角矩阵,U是上三角矩阵,使得
A=LU
一般的方阵需要先做行交换,即PA=LU(P为置换矩阵)
LU分解原理
对于任意的n阶方阵A,存在初等矩阵Eij,利用高斯消元,可以将A变为上三角矩阵,假设3阶矩阵,则
E32E31E21A=U
于是有
A=E32−1E31−1E21−1U
令E32−1E31−1E21−1=L,则A=LU,可以发现L必定为单位下三角矩阵
- 如果方阵A可逆,并且有三角分解,则该分解是唯一的
- 设A为n阶矩阵的前r(A)个顺序主子式均非零,则A存在三角分解,但不唯一
LU分解步骤
以3∗3为例
a11a21a31a12a22a32a13a23a33=1l21l3101l32001u1100u12u220u13u23u33=1l21l3101l32001a1100a12u220a13u23u33
可以得出
a21a31a22a23a32a33=u11∗l21=u11∗l31=l21u12+u22=l21u13+u23=l31u12+l32u22=l31u13+l32u23+u33
Cholesky分解
Cholesky分解的对象是:实正定矩阵
正定矩阵一般默认是对称的。实正定矩阵A必存在三角分解A=LU,且存在唯一的对角元素均为正的下三角矩阵L,使得
A=LLT
a11a21a31a12a22a32a13a23a33=abd0ce00fa00bc0def=a2abadabb2+c2bd+ceadbd+ced2+e2+f2
合同对角化
CTAC=diag(d1,d2,⋯,dn)
- C不一定是正交矩阵
- d1,d2,⋯,dn不一定是A的特征值
- 如果C是正交矩阵,则di为特征值
任意实对称矩阵可以同时进行相同行和列的初等变换化为对角形
合同对角化原理
初等变换,就是对矩阵乘上初等矩阵
PiTAPi⇓PkT⋯P2TP1TAP1P2⋯Pk
记C=P1P2⋯Pk,则
CTAC
为了得到C,可以对单位矩阵进行同等操作
(AI)⟶(CTACC)
LR分解
又称满秩分解,其对象为:m×n矩阵,假设其秩为r,存在秩同样为r两个矩阵L(列满秩)和R(行满秩),使得
A=LR
- 满秩分解不唯一:假设存在r阶可逆方阵D,则A=LR=L(DD−1)R=(LD)(D−1R)=L′R′
- 任何非零矩阵一定存在满秩分解
LR分解原理
假设存在初等变换矩阵B,使得
BA=(R0)
则
A=B−1(R0)=(L∣S)(R0)=LR
QR分解
矩阵可逆也不一定存在三角分解,矩阵正交(Q)三角(R)分解是对任何可逆矩阵都存在的理想分解。其原理是施密特正交化,设A∈Cn×n为满秩的,则存在唯一的酉矩阵Q和对角线元素均为正的上三角矩阵R,使得
A=QR
- 对于实数矩阵,这里的酉矩阵类比为正交矩阵Q即可
- 矩阵A可以是非方阵,只需要列满秩(列向量是线性无关)
- 分解是唯一的
奇异值分解
参见:[线性代数] - 奇异值分解
总结
| 分解 |
公式 |
对象 |
| 谱分解 |
λ1p1p1T+λ2p2p2T+⋯+λnpnpnT |
对称矩阵 |
| LU分解 |
A=LU=下三角×上三角 |
方阵 |
| Cholesky分解 |
A=LLT |
实正定矩阵 |
| LR分解 |
A=LR=列满秩×行满秩 |
m×n矩阵 |
| QR分解 |
A=QR=标准正交矩阵×上三角 |
满秩方阵 |
| 奇异值分解 |
A=UΣVT=左奇异向量×奇异值×右奇异向量T |
所有矩阵 |
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], ])
L = np.linalg.cholesky(A) print("Cholesky: ", end='') print(np.allclose(A, L.dot(L.T)))
A = np.array([ [3,1,2], [1,2,3], [2,3,1], ])
P, L, U = scipy.linalg.lu(A) print("LU: ", end='') print(np.allclose(A, P.dot(L).dot(U)))
Q, R = scipy.linalg.qr(A) print("QR: ", end='') print(np.allclose(A, Q.dot(R)))
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)))
|