[筆記][總結] MIT線性代數 Gilbert Strang 矩陣分解

作者水平有限,歡迎大家提出文中錯誤

PAnn=LUPA_{n*n}=LU

高斯消元法

我曾寫過一個使用高斯消元法求解行列式的C++程序,本小節直接引用這段代碼講解

[C++] 計算行列式的若干種方法

void GaussElimination2UTM(double* matrix, int dimension){
//注意cnt3一定要從矩陣最右側運算至左側,否則主元列對應元素歸零,運算就無法正常進行
	for(int cnt1=0; cnt1<dimension; cnt1++)
		for(int cnt2=cnt1+1; cnt2<dimension; cnt2++)
			for(int cnt3=dimension-1; cnt3>=cnt1; cnt3--)
				matrix[cnt2*dimension+cnt3] += 
					-1*matrix[cnt1*dimension+cnt3]*matrix[cnt2*dimension+cnt1]/matrix[cnt1*dimension+cnt1];
	return;
}

可見高斯消元法,就是從最上面的一行爲起點,以消去主元位置下所有非零值爲目的,對其下各行依次做乘加操作,直至獲得上三角陣Upper Triangle MatrixUpper\ Triangle\ Matrix

消元矩陣 Elimination matricesElimination\ matrices

Eij=[11eij11] E_{ij}= \left[ \begin{matrix} 1&&&& \\ &1&&&\\ &&\ddots\\ &&e_{ij}&1& \\ &&&&1\\ \end{matrix} \right]
其作用是
EijA=[row 1(A)row 2(A)row i(A)+eij row j(A)row m(A)] E_{ij}A= \left[ \begin{matrix} row\ 1(A)\\ row\ 2(A)\\ \vdots\\ row\ i(A)+e_{ij}\ row\ j(A)\\ \vdots\\ row\ m(A) \end{matrix} \right]
消元矩陣是在單位陣基礎上,改變了對角線下某個元素爲非零值,若此位置是row i,column jrow\ i,column\ j,在row irow\ i基礎上加上了eije_{ij}倍的row jrow\ j

由消元矩陣的意義可知,消元矩陣的逆,使得多加上的一行,通過減法消除
Eij1=[11eij11] E_{ij}^{-1}= \left[ \begin{matrix} 1&&&& \\ &1&&&\\ &&\ddots\\ &&-e_{ij}&1& \\ &&&&1\\ \end{matrix} \right]

通過高斯消元法求可逆陣的逆矩陣

通過高斯消元法,可以將可逆矩陣化爲單位矩陣,但是此時左乘的矩陣不僅僅是消元矩陣,而是涉及到所有初等行變換。如果將合作用依然寫作EE
那麼有
EA=I EA=I

E=A1 E=A^{-1}
如果同時對矩陣AA和單位陣II做初等行變換,則可以構造增廣矩陣[AI][A|I]
E[AI]=[IA1] E[A|I]=[I|A^{-1}]

A=LUA=LU

存在一個總的消元矩陣EE,使得EA=UEA=U
E=EψωEγδEαβ E= E_{\psi \omega}\dots E_{\gamma \delta}E_{\alpha \beta}
因子不能打亂順序
所求的L=E1(Lower Triangular Matrices)L=E^{-1}(Lower\ Triangular\ Matrices)
L有一個很好的性質
If no row exchanges,multipliers of elimination operations go directly into L.If\ no\ row\ exchanges,multipliers\ of\ elimination\ operations\ go\ directly\ into\ L.
而原因其實十分簡單,這裏引用課本中的證明

當計算第ii行的時候,這ii行的內容已經和UU一致,所以我們有第ii行的消元步驟如下:
row i(U)=row i(A)li1row 1(U)li2row 2(U)li(i1)row i1(U) row\ i(U)=row\ i(A)-l_{i1}row\ 1(U)-l_{i2}row\ 2(U)\cdots -l_{i(i-1)}row\ i-1(U)
整理一下式子
row i(A)=li1row 1(U)+li2row 2(U)+li(i1)row i1(U)+row i(U) row\ i(A)=l_{i1}row\ 1(U)+l_{i2}row\ 2(U)\cdots +l_{i(i-1)}row\ i-1(U)+row\ i(U)
將上式寫成矩陣形式
A=[1l211l(n1)1l(n1)21ln1ln2ln(n1)1]U A= \left[ \begin{matrix} 1&&&& \\ l_{21}&1&&&\\ \vdots&\vdots&\ddots\\ l_{(n-1)1}&l_{(n-1)2}& &1& \\ l_{n1}&l_{n2}&\cdots&l_{n(n-1)}&1\\ \end{matrix} \right]U
L=[1l211l(n1)1l(n1)21ln1ln2ln(n1)1] L= \left[ \begin{matrix} 1&&&& \\ l_{21}&1&&&\\ \vdots&\vdots&\ddots\\ l_{(n-1)1}&l_{(n-1)2}& &1& \\ l_{n1}&l_{n2}&\cdots&l_{n(n-1)}&1\\ \end{matrix} \right]

置換矩陣 Permutation matricesPermutation\ matrices

Pij=[1111] P_{ij}= \left[ \begin{matrix} 1&&&& \\ &&&1&\\ &&\ddots\\ &1&&& \\ &&&&1\\ \end{matrix} \right]
置換矩陣是在單位矩陣基礎上,對矩陣的第ii行、第jj行或(第ii列、第jj列)進行交換,可見n維置換矩陣有n!n!種,並且這些矩陣可以構成一個羣。

置換矩陣有如下性質:

  1. PT=P1(orthogonal)P^T=P^{-1}(orthogonal)
  2. det P=1det\ P=-1

從變換的意義上講,置換矩陣對應的是一種鏡像變換

何時需要置換矩陣

還是以[C++] 計算行列式的若干種方法講解
在高斯消元法求解上三角陣的時候,由於一個極小主元的出現,使得整個消元過程出現了極大誤差,原因是計算機中浮點數的精度是有限的,對於極小值,在計算機中精度的丟失是致命的。當我的程序引入了置換操作後,問題得以解決。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在代數上,置換操作是爲了解決消元過程中產生的主元爲零,使得消元無法繼續的問題,換句話說PP使得矩陣AA各行排列在合適的位置上,避免主元0的出現。

PA=LDUPA=LDU

LU分解還有一個更加平衡的形式,通過消元得到的上三角陣UU,可以進一步把主元分離出來,構成Diagonal MatricesDiagonal\ Matrices
例如
[213]=[23][1121] \left[ \begin{matrix} 2&1 \\ &3 \end{matrix} \right]= \left[ \begin{matrix} 2& \\ &3\\ \end{matrix} \right] \left[ \begin{matrix} 1&\frac{1}{2}\\ &1\\ \end{matrix} \right]

秩一矩陣的分解A=uvTA=uv^T

所有秩一矩陣都可以表示稱主行和主列的乘積
[1452810]=[12][145] \left[ \begin{matrix} 1&4&5 \\ 2&8&10 \end{matrix} \right]= \left[ \begin{matrix} 1\\ 2\\ \end{matrix} \right] \left[ \begin{matrix} 1&4&5\\ \end{matrix} \right]
秩一矩陣就像構造其他矩陣的積木一樣,比如一個5175*17的秩44矩陣,最少可以拆成44個秩一矩陣

A=QRA=QR

暫無

特徵值分解

假設nn階方陣
AA存在nn個相互獨立的特徵向量,構造成特徵向量矩陣
S=[x1 x2xn] S=[x_1\ x_2\cdots x_n]
AA左乘SS
AS=[λ1x1 λ2x2λnxn] AS=[\lambda_1x_1\ \lambda_2x_2\cdots\lambda_nx_n]
分離特徵值和特徵向量
AS=[x1 x2xn][λ1λ2λn]=SΛ AS=[x_1\ x_2\cdots x_n] \left[ \begin{matrix} \lambda_1&&&\\ &\lambda_2&&\\ &&\ddots&\\ &&&\lambda_n\\ \end{matrix} \right]=S\Lambda
左乘S1S^{-1}
A=SΛS1 A=S\Lambda S^{-1}
詳見[筆記][總結] MIT線性代數 Gilbert Strang 矩陣運算

奇異值分解

奇異值分解(Singular Value Decomposition)(Singular\ Value\ Decomposition)
A=UΣVT A=U\Sigma V^T
如果AA是方陣,U,VU,V都是標準正交矩陣,Σ\Sigma是對角矩陣,但其實任意類型的矩陣都可以進行奇異值分解

奇異值分解的意義

在這裏插入圖片描述
v1 v2vrv_1\ v_2\cdots v_r行空間的一組標準正交基u1 u2uru_1\ u_2\cdots u_r是列空間的一組標準正交基,而且這組正交基的每一個基都滿足σiui=Avi(σ is a stretching factor)\sigma_iu_i=Av_i(\sigma\ is\ a\ stretching\ factor),當然並不是行空間的任意一組正交基,都能在都左乘AA後,仍然保持正交。這個不影響分解
σiui=Avi\sigma_iu_i=Av_i可以表示成
[u1 u2ur]mr[σ1σ2σr]rr=Amn[v1 v2vr]nr [u_1\ u_2\cdots u_r]_{m*r} \left[ \begin{matrix} \sigma_1&&&\\ &\sigma_2&&\\ &&\ddots&\\ &&&\sigma_r \end{matrix} \right]_{r*r}= A_{m*n} [v_1\ v_2\cdots v_r]_{n*r}

但是這還不是奇異值分解的最終形式,因爲N(A)N(A)N(AT)N(A^T)的信息還是隱藏着

補充vr+1vmv_{r+1}\cdots v_m是零空間的一組標準正交基
補充ur+1unu_{r+1}\cdots u_n是左零空間的一組標準正交基
V=[v1 v2vr vr+1 vn]nn=[VC(AT) VN(A)] V= [v_1\ v_2\cdots v_r\ v_{r+1}\cdots\ v_n]_{n*n}=[V_{C(A^T)}\ V_{N(A)}]

U=[u1 u2ur ur+1 um]mm=[UC(A) UN(AT)] U= [u_1\ u_2\cdots u_r\ u_{r+1}\cdots\ u_m]_{m*m}=[U_{C(A)}\ U_{N(A^T)}]

UU的列向量構成了Rm\mathbb R^m的一組標準正交基
VV的列向量構成了Rn\mathbb R^n的一組標準正交基
Amn[VC(AT)nr VN(A)n(nr)]nn=[UC(A)mr UN(AT)m(mr)]mm[ΣrrOr(nr)O(mr)rO(mr)(nr)]mn A_{m*n}[V_{C(A^T)n*r}\ V_{N(A)n*(n-r)}]_{n*n}= [U_{C(A)m*r}\ U_{N(A^T)m*(m-r)}]_{m*m} \left[ \begin{matrix} \Sigma_{r*r}&O_{r*(n-r)}\\ O_{(m-r)*r}&O_{(m-r)*(n-r)}\\ \end{matrix} \right]_{m*n}
Amn=[UC(A)mr Un(AT)m(mr)]mm[ΣrrOr(nr)O(mr)rO(mr)(nr)]mn[VC(AT)rnTVN(A)(nr)nT] A_{m*n}= [U_{C(A)m*r}\ U_{n(A^T)m*(m-r)}]_{m*m} \left[ \begin{matrix} \Sigma_{r*r}&O_{r*(n-r)}\\ O_{(m-r)*r}&O_{(m-r)*(n-r)}\\ \end{matrix} \right]_{m*n} \left[ \begin{matrix} V_{C(A^T)r*n}^T\\ V_{N(A)(n-r)*n}^T\\ \end{matrix} \right]
其中上式包含
A=UC(A)ΣVC(AT)T A=U_{C(A)}\Sigma V_{C(A^T)}^T

由於UN(AT)U_{N(A^T)}VN(A)V_{N(A)}的選取是任意的,所以矩陣AA的奇異值分解不一定是唯一的,但是A=UC(A)ΣVC(AT)TA=U_{C(A)}\Sigma V_{C(A^T)}^T是唯一的
最後,一般的奇異值分解爲
A=U[ΣOOO]VT A=U \left[ \begin{matrix} \Sigma&O\\ O&O\\ \end{matrix} \right] V^T

方陣的奇異值分解

Ann=U[ΣrrOr(nr)O(nr)rO(nr)(nr)]V A_{n*n}=U \left[ \begin{matrix} \Sigma_{r*r}&O_{r*(n-r)}\\ O_{(n-r)*r}&O_{(n-r)*(n-r)}\\ \end{matrix} \right] V
對於方陣,U,VU,V中間的矩陣一定是對角陣,在計算過程中,沒有必要把零值和非零值分開計算,零值直接視作零特徵值,不妨直接把中間的矩陣記作Σ\Sigma

已經知道ATAA^TA是對稱矩陣,如果已經知道了A=UΣVTA=U\Sigma V^T
ATA=VΣUTUΣVT=VΣ2VT A^TA=V\Sigma U^TU\Sigma V^T=V\Sigma^2 V^T
式子中的VV是奇異值分解裏的VV

同樣的AATAA^T也是對稱矩陣
AAT=UΣ2UT AA^T=U\Sigma^2 U^T
式子中的UU是奇異值分解裏的UU
綜上所述,標準正交矩陣VVATAA^TA的特徵向量矩陣,標準正交矩陣UUAATAA^T的特徵向量矩陣
同時也可以看出,即使AATAA^TATAA^TA不一定是正定的,但至少他們都是半正定的
而且AATAA^TATAA^TA有相同的特徵值,這不是偶然ABABBABA當然有相同的特徵值

這個Σ\Sigma的平方,就是上邊特徵值矩陣,對各項開方即可得到。

再議對稱矩陣

所有矩陣的奇異值分解中,要數對稱矩陣的奇異值分解最特殊,因爲其U=VU=V
對稱矩陣的奇異值分解爲
A=QΛ QT A=Q\Lambda\ Q^T
同時上式也是對稱矩陣的特徵值分解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章