[笔记][总结] MIT线性代数 Gilbert Strang 矩阵分解

作者水平有限,欢迎大家提出文中错误

P A n ∗ n = L U PA_{n*n}=LU PAnn=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;
}

可见高斯消元法,就是从最上面的一行为起点,以消去主元位置下所有非零值为目的,对其下各行依次做乘加操作,直至获得上三角阵 U p p e r   T r i a n g l e   M a t r i x Upper\ Triangle\ Matrix Upper Triangle Matrix

消元矩阵 E l i m i n a t i o n   m a t r i c e s Elimination\ matrices Elimination matrices

E i j = [ 1 1 ⋱ e i j 1 1 ] E_{ij}= \left[ \begin{matrix} 1&&&& \\ &1&&&\\ &&\ddots\\ &&e_{ij}&1& \\ &&&&1\\ \end{matrix} \right] Eij=11eij11
其作用是
E i j A = [ r o w   1 ( A ) r o w   2 ( A ) ⋮ r o w   i ( A ) + e i j   r o w   j ( A ) ⋮ r o w   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] EijA=row 1(A)row 2(A)row i(A)+eij row j(A)row m(A)
消元矩阵是在单位阵基础上,改变了对角线下某个元素为非零值,若此位置是 r o w   i , c o l u m n   j row\ i,column\ j row i,column j,在 r o w   i row\ i row i基础上加上了 e i j e_{ij} eij倍的 r o w   j row\ j row j

由消元矩阵的意义可知,消元矩阵的逆,使得多加上的一行,通过减法消除
E i j − 1 = [ 1 1 ⋱ − e i j 1 1 ] E_{ij}^{-1}= \left[ \begin{matrix} 1&&&& \\ &1&&&\\ &&\ddots\\ &&-e_{ij}&1& \\ &&&&1\\ \end{matrix} \right] Eij1=11eij11

通过高斯消元法求可逆阵的逆矩阵

通过高斯消元法,可以将可逆矩阵化为单位矩阵,但是此时左乘的矩阵不仅仅是消元矩阵,而是涉及到所有初等行变换。如果将合作用依然写作 E E E
那么有
E A = I EA=I EA=I

E = A − 1 E=A^{-1} E=A1
如果同时对矩阵 A A A和单位阵 I I I做初等行变换,则可以构造增广矩阵 [ A ∣ I ] [A|I] [AI]
E [ A ∣ I ] = [ I ∣ A − 1 ] E[A|I]=[I|A^{-1}] E[AI]=[IA1]

A = L U A=LU A=LU

存在一个总的消元矩阵 E E E,使得 E A = U EA=U EA=U
E = E ψ ω … E γ δ E α β E= E_{\psi \omega}\dots E_{\gamma \delta}E_{\alpha \beta} E=EψωEγδEαβ
因子不能打乱顺序
所求的 L = E − 1 ( L o w e r   T r i a n g u l a r   M a t r i c e s ) L=E^{-1}(Lower\ Triangular\ Matrices) L=E1(Lower Triangular Matrices)
L有一个很好的性质
I f   n o   r o w   e x c h a n g e s , m u l t i p l i e r s   o f   e l i m i n a t i o n   o p e r a t i o n s   g o   d i r e c t l y   i n t o   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.
而原因其实十分简单,这里引用课本中的证明

当计算第 i i i行的时候,这 i i i行的内容已经和 U U U一致,所以我们有第 i i i行的消元步骤如下:
r o w   i ( U ) = r o w   i ( A ) − l i 1 r o w   1 ( U ) − l i 2 r o w   2 ( U ) ⋯ − l i ( i − 1 ) r o w   i − 1 ( 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)=row i(A)li1row 1(U)li2row 2(U)li(i1)row i1(U)
整理一下式子
r o w   i ( A ) = l i 1 r o w   1 ( U ) + l i 2 r o w   2 ( U ) ⋯ + l i ( i − 1 ) r o w   i − 1 ( U ) + r o w   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) row i(A)=li1row 1(U)+li2row 2(U)+li(i1)row i1(U)+row i(U)
将上式写成矩阵形式
A = [ 1 l 21 1 ⋮ ⋮ ⋱ l ( n − 1 ) 1 l ( n − 1 ) 2 1 l n 1 l n 2 ⋯ l n ( n − 1 ) 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 A=1l21l(n1)1ln11l(n1)2ln21ln(n1)1U
L = [ 1 l 21 1 ⋮ ⋮ ⋱ l ( n − 1 ) 1 l ( n − 1 ) 2 1 l n 1 l n 2 ⋯ l n ( n − 1 ) 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] L=1l21l(n1)1ln11l(n1)2ln21ln(n1)1

置换矩阵 P e r m u t a t i o n   m a t r i c e s Permutation\ matrices Permutation matrices

P i j = [ 1 1 ⋱ 1 1 ] P_{ij}= \left[ \begin{matrix} 1&&&& \\ &&&1&\\ &&\ddots\\ &1&&& \\ &&&&1\\ \end{matrix} \right] Pij=1111
置换矩阵是在单位矩阵基础上,对矩阵的第 i i i行、第 j j j行或(第 i i i列、第 j j j列)进行交换,可见n维置换矩阵有 n ! n! n!种,并且这些矩阵可以构成一个群。

置换矩阵有如下性质:

  1. P T = P − 1 ( o r t h o g o n a l ) P^T=P^{-1}(orthogonal) PT=P1(orthogonal)
  2. d e t   P = − 1 det\ P=-1 det P=1

从变换的意义上讲,置换矩阵对应的是一种镜像变换

何时需要置换矩阵

还是以[C++] 计算行列式的若干种方法讲解
在高斯消元法求解上三角阵的时候,由于一个极小主元的出现,使得整个消元过程出现了极大误差,原因是计算机中浮点数的精度是有限的,对于极小值,在计算机中精度的丢失是致命的。当我的程序引入了置换操作后,问题得以解决。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在代数上,置换操作是为了解决消元过程中产生的主元为零,使得消元无法继续的问题,换句话说 P P P使得矩阵 A A A各行排列在合适的位置上,避免主元0的出现。

P A = L D U PA=LDU PA=LDU

LU分解还有一个更加平衡的形式,通过消元得到的上三角阵 U U U,可以进一步把主元分离出来,构成 D i a g o n a l   M a t r i c e s Diagonal\ Matrices Diagonal Matrices
例如
[ 2 1 3 ] = [ 2 3 ] [ 1 1 2 1 ] \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] [213]=[23][1211]

秩一矩阵的分解 A = u v T A=uv^T A=uvT

所有秩一矩阵都可以表示称主行和主列的乘积
[ 1 4 5 2 8 10 ] = [ 1 2 ] [ 1 4 5 ] \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] [1248510]=[12][145]
秩一矩阵就像构造其他矩阵的积木一样,比如一个 5 ∗ 17 5*17 517的秩 4 4 4矩阵,最少可以拆成 4 4 4个秩一矩阵

A = Q R A=QR A=QR

暂无

特征值分解

假设 n n n阶方阵
A A A存在 n n n个相互独立的特征向量,构造成特征向量矩阵
S = [ x 1   x 2 ⋯ x n ] S=[x_1\ x_2\cdots x_n] S=[x1 x2xn]
A A A左乘 S S S
A S = [ λ 1 x 1   λ 2 x 2 ⋯ λ n x n ] AS=[\lambda_1x_1\ \lambda_2x_2\cdots\lambda_nx_n] AS=[λ1x1 λ2x2λnxn]
分离特征值和特征向量
A S = [ x 1   x 2 ⋯ x n ] [ λ 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 AS=[x1 x2xn]λ1λ2λn=SΛ
左乘 S − 1 S^{-1} S1
A = S Λ S − 1 A=S\Lambda S^{-1} A=SΛS1
详见[笔记][总结] MIT线性代数 Gilbert Strang 矩阵运算

奇异值分解

奇异值分解 ( S i n g u l a r   V a l u e   D e c o m p o s i t i o n ) (Singular\ Value\ Decomposition) (Singular Value Decomposition)
A = U Σ V T A=U\Sigma V^T A=UΣVT
如果 A A A是方阵, U , V U,V U,V都是标准正交矩阵, Σ \Sigma Σ是对角矩阵,但其实任意类型的矩阵都可以进行奇异值分解

奇异值分解的意义

在这里插入图片描述
v 1   v 2 ⋯ v r v_1\ v_2\cdots v_r v1 v2vr行空间的一组标准正交基 u 1   u 2 ⋯ u r u_1\ u_2\cdots u_r u1 u2ur是列空间的一组标准正交基,而且这组正交基的每一个基都满足 σ i u i = A v i ( σ   i s   a   s t r e t c h i n g   f a c t o r ) \sigma_iu_i=Av_i(\sigma\ is\ a\ stretching\ factor) σiui=Avi(σ is a stretching factor),当然并不是行空间的任意一组正交基,都能在都左乘 A A A后,仍然保持正交。这个不影响分解
σ i u i = A v i \sigma_iu_i=Av_i σiui=Avi可以表示成
[ u 1   u 2 ⋯ u r ] m ∗ r [ σ 1 σ 2 ⋱ σ r ] r ∗ r = A m ∗ n [ v 1   v 2 ⋯ v r ] n ∗ r [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} [u1 u2ur]mrσ1σ2σrrr=Amn[v1 v2vr]nr

但是这还不是奇异值分解的最终形式,因为 N ( A ) N(A) N(A) N ( A T ) N(A^T) N(AT)的信息还是隐藏着

补充 v r + 1 ⋯ v m v_{r+1}\cdots v_m vr+1vm是零空间的一组标准正交基
补充 u r + 1 ⋯ u n u_{r+1}\cdots u_n ur+1un是左零空间的一组标准正交基
V = [ v 1   v 2 ⋯ v r   v r + 1 ⋯   v n ] n ∗ n = [ V C ( A T )   V N ( A ) ] V= [v_1\ v_2\cdots v_r\ v_{r+1}\cdots\ v_n]_{n*n}=[V_{C(A^T)}\ V_{N(A)}] V=[v1 v2vr vr+1 vn]nn=[VC(AT) VN(A)]

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

U U U的列向量构成了 R m \mathbb R^m Rm的一组标准正交基
V V V的列向量构成了 R n \mathbb R^n Rn的一组标准正交基
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 [ Σ r ∗ r O r ∗ ( n − r ) O ( m − r ) ∗ r O ( m − r ) ∗ ( n − r ) ] m ∗ n 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[VC(AT)nr VN(A)n(nr)]nn=[UC(A)mr UN(AT)m(mr)]mm[ΣrrO(mr)rOr(nr)O(mr)(nr)]mn
A m ∗ n = [ U C ( A ) m ∗ r   U n ( A T ) m ∗ ( m − r ) ] m ∗ m [ Σ r ∗ r O r ∗ ( n − r ) O ( m − r ) ∗ r O ( m − r ) ∗ ( n − r ) ] m ∗ n [ V C ( A T ) r ∗ n T V N ( A ) ( n − r ) ∗ n T ] 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] Amn=[UC(A)mr Un(AT)m(mr)]mm[ΣrrO(mr)rOr(nr)O(mr)(nr)]mn[VC(AT)rnTVN(A)(nr)nT]
其中上式包含
A = U C ( A ) Σ V C ( A T ) T A=U_{C(A)}\Sigma V_{C(A^T)}^T A=UC(A)ΣVC(AT)T

由于 U N ( A T ) U_{N(A^T)} UN(AT) V N ( A ) V_{N(A)} VN(A)的选取是任意的,所以矩阵 A A A的奇异值分解不一定是唯一的,但是 A = U C ( A ) Σ V C ( A T ) T A=U_{C(A)}\Sigma V_{C(A^T)}^T A=UC(A)ΣVC(AT)T是唯一的
最后,一般的奇异值分解为
A = U [ Σ O O O ] V T A=U \left[ \begin{matrix} \Sigma&O\\ O&O\\ \end{matrix} \right] V^T A=U[ΣOOO]VT

方阵的奇异值分解

A n ∗ n = U [ Σ r ∗ r O r ∗ ( n − r ) O ( n − r ) ∗ r O ( n − r ) ∗ ( n − r ) ] 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 Ann=U[ΣrrO(nr)rOr(nr)O(nr)(nr)]V
对于方阵, U , V U,V U,V中间的矩阵一定是对角阵,在计算过程中,没有必要把零值和非零值分开计算,零值直接视作零特征值,不妨直接把中间的矩阵记作 Σ \Sigma Σ

已经知道 A T A A^TA ATA是对称矩阵,如果已经知道了 A = U Σ V T A=U\Sigma V^T A=UΣVT
A T A = V Σ U T U Σ V T = V Σ 2 V T A^TA=V\Sigma U^TU\Sigma V^T=V\Sigma^2 V^T ATA=VΣUTUΣVT=VΣ2VT
式子中的 V V V是奇异值分解里的 V V V

同样的 A A T AA^T AAT也是对称矩阵
A A T = U Σ 2 U T AA^T=U\Sigma^2 U^T AAT=UΣ2UT
式子中的 U U U是奇异值分解里的 U U U
综上所述,标准正交矩阵 V V V A T A A^TA ATA的特征向量矩阵,标准正交矩阵 U U U A A T AA^T AAT的特征向量矩阵
同时也可以看出,即使 A A T AA^T AAT A T A A^TA ATA不一定是正定的,但至少他们都是半正定的
而且 A A T AA^T AAT A T A A^TA ATA有相同的特征值,这不是偶然 A B AB AB B A BA BA当然有相同的特征值

这个 Σ \Sigma Σ的平方,就是上边特征值矩阵,对各项开方即可得到。

再议对称矩阵

所有矩阵的奇异值分解中,要数对称矩阵的奇异值分解最特殊,因为其 U = V U=V U=V
对称矩阵的奇异值分解为
A = Q Λ   Q T A=Q\Lambda\ Q^T A=QΛ QT
同时上式也是对称矩阵的特征值分解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值