[笔记][总结] MIT线性代数 Gilbert Strang 矩阵分解
作者水平有限,欢迎大家提出文中错误
矩阵分解
- PAn∗n=LUPA_{n*n}=LUPAn∗n=LU
- 高斯消元法
- 消元矩阵 EliminationmatricesElimination\ matricesElimination matrices
- 通过高斯消元法求可逆阵的逆矩阵
- A=LUA=LUA=LU
- 置换矩阵 PermutationmatricesPermutation\ matricesPermutation matrices
- 何时需要置换矩阵
- PA=LDUPA=LDUPA=LDU
- 秩一矩阵的分解A=uvTA=uv^TA=uvT
- A=QRA=QRA=QR
- 特征值分解
- 奇异值分解
- 奇异值分解的意义
- 方阵的奇异值分解
- 再议对称矩阵
PAn∗n=LUPA_{n*n}=LUPAn∗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; }
可见高斯消元法,就是从最上面的一行为起点,以消去主元位置下所有非零值为目的,对其下各行依次做乘加操作,直至获得上三角阵UpperTriangleMatrixUpper\ Triangle\ MatrixUpper Triangle Matrix
消元矩阵 EliminationmatricesElimination\ matricesElimination matrices
Eij=[11⋱eij11]E_{ij}= \left[ \begin{matrix} 1&&&& \\ &1&&&\\ &&\ddots\\ &&e_{ij}&1& \\ &&&&1\\ \end{matrix} \right] Eij=⎣⎢⎢⎢⎢⎡11⋱eij11⎦⎥⎥⎥⎥⎤
其作用是
EijA=[row1(A)row2(A)⋮rowi(A)+eijrowj(A)⋮rowm(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)⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
消元矩阵是在单位阵基础上,改变了对角线下某个元素为非零值,若此位置是rowi,columnjrow\ i,column\ jrow i,column j,在rowirow\ irow i基础上加上了eije_{ij}eij倍的rowjrow\ jrow j
由消元矩阵的意义可知,消元矩阵的逆,使得多加上的一行,通过减法消除
Eij−1=[11⋱−eij11]E_{ij}^{-1}= \left[ \begin{matrix} 1&&&& \\ &1&&&\\ &&\ddots\\ &&-e_{ij}&1& \\ &&&&1\\ \end{matrix} \right] Eij−1=⎣⎢⎢⎢⎢⎡11⋱−eij11⎦⎥⎥⎥⎥⎤
通过高斯消元法求可逆阵的逆矩阵
通过高斯消元法,可以将可逆矩阵化为单位矩阵,但是此时左乘的矩阵不仅仅是消元矩阵,而是涉及到所有初等行变换。如果将合作用依然写作EEE
那么有
EA=IEA=I EA=I
则
E=A−1E=A^{-1} E=A−1
如果同时对矩阵AAA和单位阵III做初等行变换,则可以构造增广矩阵[A∣I][A|I][A∣I]
E[A∣I]=[I∣A−1]E[A|I]=[I|A^{-1}] E[A∣I]=[I∣A−1]
A=LUA=LUA=LU
存在一个总的消元矩阵EEE,使得EA=UEA=UEA=U
E=Eψω…EγδEαβE= E_{\psi \omega}\dots E_{\gamma \delta}E_{\alpha \beta} E=Eψω…EγδEαβ
因子不能打乱顺序
所求的L=E−1(LowerTriangularMatrices)L=E^{-1}(Lower\ Triangular\ Matrices)L=E−1(Lower Triangular Matrices)
L有一个很好的性质
Ifnorowexchanges,multipliersofeliminationoperationsgodirectlyintoL.If\ no\ row\ exchanges,multipliers\ of\ elimination\ operations\ go\ directly\ into\ L.If no row exchanges,multipliers of elimination operations go directly into L.
而原因其实十分简单,这里引用课本中的证明
当计算第iii行的时候,这iii行的内容已经和UUU一致,所以我们有第iii行的消元步骤如下:
rowi(U)=rowi(A)−li1row1(U)−li2row2(U)⋯−li(i−1)rowi−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(i−1)row i−1(U)
整理一下式子
rowi(A)=li1row1(U)+li2row2(U)⋯+li(i−1)rowi−1(U)+rowi(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(i−1)row i−1(U)+row i(U)
将上式写成矩阵形式
A=[1l211⋮⋮⋱l(n−1)1l(n−1)21ln1ln2⋯ln(n−1)1]UA= \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=⎣⎢⎢⎢⎢⎢⎡1l21⋮l(n−1)1ln11⋮l(n−1)2ln2⋱⋯1ln(n−1)1⎦⎥⎥⎥⎥⎥⎤U
L=[1l211⋮⋮⋱l(n−1)1l(n−1)21ln1ln2⋯ln(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=⎣⎢⎢⎢⎢⎢⎡1l21⋮l(n−1)1ln11⋮l(n−1)2ln2⋱⋯1ln(n−1)1⎦⎥⎥⎥⎥⎥⎤
置换矩阵 PermutationmatricesPermutation\ matricesPermutation matrices
Pij=[11⋱11]P_{ij}= \left[ \begin{matrix} 1&&&& \\ &&&1&\\ &&\ddots\\ &1&&& \\ &&&&1\\ \end{matrix} \right] Pij=⎣⎢⎢⎢⎢⎡11⋱11⎦⎥⎥⎥⎥⎤
置换矩阵是在单位矩阵基础上,对矩阵的第iii行、第jjj行或(第iii列、第jjj列)进行交换,可见n维置换矩阵有n!n!n!种,并且这些矩阵可以构成一个群。
置换矩阵有如下性质:
- PT=P−1(orthogonal)P^T=P^{-1}(orthogonal)PT=P−1(orthogonal)
- detP=−1det\ P=-1det P=−1
从变换的意义上讲,置换矩阵对应的是一种镜像变换
何时需要置换矩阵
还是以[C++] 计算行列式的若干种方法讲解
在高斯消元法求解上三角阵的时候,由于一个极小主元的出现,使得整个消元过程出现了极大误差,原因是计算机中浮点数的精度是有限的,对于极小值,在计算机中精度的丢失是致命的。当我的程序引入了置换操作后,问题得以解决。
在代数上,置换操作是为了解决消元过程中产生的主元为零,使得消元无法继续的问题,换句话说PPP使得矩阵AAA各行排列在合适的位置上,避免主元0的出现。
PA=LDUPA=LDUPA=LDU
LU分解还有一个更加平衡的形式,通过消元得到的上三角阵UUU,可以进一步把主元分离出来,构成DiagonalMatricesDiagonal\ 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] [213]=[23][1211]
秩一矩阵的分解A=uvTA=uv^TA=uvT
所有秩一矩阵都可以表示称主行和主列的乘积
[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] [1248510]=[12][145]
秩一矩阵就像构造其他矩阵的积木一样,比如一个5∗175*175∗17的秩444矩阵,最少可以拆成444个秩一矩阵
A=QRA=QRA=QR
暂无
特征值分解
假设nnn阶方阵
AAA存在nnn个相互独立的特征向量,构造成特征向量矩阵
S=[x1x2⋯xn]S=[x_1\ x_2\cdots x_n] S=[x1 x2⋯xn]
将AAA左乘SSS
AS=[λ1x1λ2x2⋯λnxn]AS=[\lambda_1x_1\ \lambda_2x_2\cdots\lambda_nx_n] AS=[λ1x1 λ2x2⋯λnxn]
分离特征值和特征向量
AS=[x1x2⋯xn][λ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 x2⋯xn]⎣⎢⎢⎡λ1λ2⋱λn⎦⎥⎥⎤=SΛ
左乘S−1S^{-1}S−1
A=SΛS−1A=S\Lambda S^{-1} A=SΛS−1
详见[笔记][总结] MIT线性代数 Gilbert Strang 矩阵运算
奇异值分解
奇异值分解(SingularValueDecomposition)(Singular\ Value\ Decomposition)(Singular Value Decomposition)
A=UΣVTA=U\Sigma V^T A=UΣVT
如果AAA是方阵,U,VU,VU,V都是标准正交矩阵,Σ\SigmaΣ是对角矩阵,但其实任意类型的矩阵都可以进行奇异值分解
奇异值分解的意义
v1v2⋯vrv_1\ v_2\cdots v_rv1 v2⋯vr行空间的一组标准正交基,u1u2⋯uru_1\ u_2\cdots u_ru1 u2⋯ur是列空间的一组标准正交基,而且这组正交基的每一个基都满足σiui=Avi(σisastretchingfactor)\sigma_iu_i=Av_i(\sigma\ is\ a\ stretching\ factor)σiui=Avi(σ is a stretching factor),当然并不是行空间的任意一组正交基,都能在都左乘AAA后,仍然保持正交。这个不影响分解
σiui=Avi\sigma_iu_i=Av_iσiui=Avi可以表示成
[u1u2⋯ur]m∗r[σ1σ2⋱σr]r∗r=Am∗n[v1v2⋯vr]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 u2⋯ur]m∗r⎣⎢⎢⎡σ1σ2⋱σr⎦⎥⎥⎤r∗r=Am∗n[v1 v2⋯vr]n∗r
但是这还不是奇异值分解的最终形式,因为N(A)N(A)N(A)和N(AT)N(A^T)N(AT)的信息还是隐藏着
补充vr+1⋯vmv_{r+1}\cdots v_mvr+1⋯vm是零空间的一组标准正交基
补充ur+1⋯unu_{r+1}\cdots u_nur+1⋯un是左零空间的一组标准正交基
V=[v1v2⋯vrvr+1⋯vn]n∗n=[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)}] V=[v1 v2⋯vr vr+1⋯ vn]n∗n=[VC(AT) VN(A)]
U=[u1u2⋯urur+1⋯um]m∗m=[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)}] U=[u1 u2⋯ur ur+1⋯ um]m∗m=[UC(A) UN(AT)]
UUU的列向量构成了Rm\mathbb R^mRm的一组标准正交基
VVV的列向量构成了Rn\mathbb R^nRn的一组标准正交基
Am∗n[VC(AT)n∗rVN(A)n∗(n−r)]n∗n=[UC(A)m∗rUN(AT)m∗(m−r)]m∗m[Σr∗rOr∗(n−r)O(m−r)∗rO(m−r)∗(n−r)]m∗nA_{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} Am∗n[VC(AT)n∗r VN(A)n∗(n−r)]n∗n=[UC(A)m∗r UN(AT)m∗(m−r)]m∗m[Σr∗rO(m−r)∗rOr∗(n−r)O(m−r)∗(n−r)]m∗n
Am∗n=[UC(A)m∗rUn(AT)m∗(m−r)]m∗m[Σr∗rOr∗(n−r)O(m−r)∗rO(m−r)∗(n−r)]m∗n[VC(AT)r∗nTVN(A)(n−r)∗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] Am∗n=[UC(A)m∗r Un(AT)m∗(m−r)]m∗m[Σr∗rO(m−r)∗rOr∗(n−r)O(m−r)∗(n−r)]m∗n[VC(AT)r∗nTVN(A)(n−r)∗nT]
其中上式包含
A=UC(A)ΣVC(AT)TA=U_{C(A)}\Sigma V_{C(A^T)}^T A=UC(A)ΣVC(AT)T
由于UN(AT)U_{N(A^T)}UN(AT)和VN(A)V_{N(A)}VN(A)的选取是任意的,所以矩阵AAA的奇异值分解不一定是唯一的,但是A=UC(A)ΣVC(AT)TA=U_{C(A)}\Sigma V_{C(A^T)}^TA=UC(A)ΣVC(AT)T是唯一的
最后,一般的奇异值分解为
A=U[ΣOOO]VTA=U \left[ \begin{matrix} \Sigma&O\\ O&O\\ \end{matrix} \right] V^T A=U[ΣOOO]VT
方阵的奇异值分解
An∗n=U[Σr∗rOr∗(n−r)O(n−r)∗rO(n−r)∗(n−r)]VA_{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 An∗n=U[Σr∗rO(n−r)∗rOr∗(n−r)O(n−r)∗(n−r)]V
对于方阵,U,VU,VU,V中间的矩阵一定是对角阵,在计算过程中,没有必要把零值和非零值分开计算,零值直接视作零特征值,不妨直接把中间的矩阵记作Σ\SigmaΣ
已经知道ATAA^TAATA是对称矩阵,如果已经知道了A=UΣVTA=U\Sigma V^TA=UΣVT
ATA=VΣUTUΣVT=VΣ2VTA^TA=V\Sigma U^TU\Sigma V^T=V\Sigma^2 V^T ATA=VΣUTUΣVT=VΣ2VT
式子中的VVV是奇异值分解里的VVV
同样的AATAA^TAAT也是对称矩阵
AAT=UΣ2UTAA^T=U\Sigma^2 U^T AAT=UΣ2UT
式子中的UUU是奇异值分解里的UUU
综上所述,标准正交矩阵VVV是ATAA^TAATA的特征向量矩阵,标准正交矩阵UUU是AATAA^TAAT的特征向量矩阵
同时也可以看出,即使AATAA^TAAT和ATAA^TAATA不一定是正定的,但至少他们都是半正定的
而且AATAA^TAAT和ATAA^TAATA有相同的特征值,这不是偶然ABABAB和BABABA当然有相同的特征值
这个Σ\SigmaΣ的平方,就是上边特征值矩阵,对各项开方即可得到。
再议对称矩阵
所有矩阵的奇异值分解中,要数对称矩阵的奇异值分解最特殊,因为其U=VU=VU=V
对称矩阵的奇异值分解为
A=QΛQTA=Q\Lambda\ Q^T A=QΛ QT
同时上式也是对称矩阵的特征值分解
[笔记][总结] MIT线性代数 Gilbert Strang 矩阵分解相关推荐
- [笔记][总结] MIT线性代数 Gilbert Strang 矩阵的应用
作者水平有限,欢迎大家提出文中错误 矩阵的应用 电路理论 图的矩阵表示--邻接矩阵 回路 零空间 左零空间 Ohm′slawOhm's\ lawOhm′s law 再议回路 外部电源 电路理论的三个核 ...
- [笔记][总结] MIT线性代数 Gilbert Strang 对称矩阵
作者水平有限,欢迎大家提出文中错误 正定性与对称矩阵 对称矩阵 对称矩阵的对角化 正定性 正定矩阵判据 正定矩阵的性质 正定性与最小二乘法 二次型 对称矩阵的LU分解与二次型的配方 连续多元函数在某点 ...
- [笔记][总结] MIT线性代数 Gilbert Strang 矩阵运算
作者水平有限,欢迎大家提出文中错误 矩阵运算 转置 转置的性质 求逆 使用高斯消元法求解逆矩阵 矩阵逆的代数表达式 Cramer′sruleCramer's\ ruleCramer′s rule 方阵 ...
- [笔记][总结] MIT线性代数 Gilbert Strang 正交矩阵
作者水平有限,欢迎大家提出文中错误 正交性与正交矩阵 正交性 标准正交矩阵 投影矩阵 一维情况 最小二乘法 回到投影矩阵 投影矩阵的若干性质 再述最小二乘法 Gram-Schmidt正交化 A=QRA ...
- [笔记][总结] MIT线性代数 Gilbert Strang 向量空间
作者水平有限,欢迎大家提出文中错误 向量空间与四个基本子空间 向量空间 线性子空间 四个基本子空间 C(A):columnspaceofAC(A):column\ space\ of \ AC(A): ...
- [笔记][总结] MIT线性代数 Gilbert Strang 线性方程组
作者水平有限,欢迎大家提出文中错误 矩阵方程.线性方程组 Ax=bAx=bAx=b的行图像 Ax=bAx=bAx=b的列图像 齐次方程Ax=0Ax=0Ax=0 非齐次方程Ax=bAx=bAx=b Ax ...
- 86岁还在录网课:MIT教授Gilbert Strang最新「线性代数」课程上线
机器之心报道 参与:张倩.Jamin.Raccon X 讲 MIT 线性代数经典课程的 Gilbert Strang 教授已经 86 岁高龄了.他的书被清华选作教材,课程吸引了国内外大批学子.如今疫情 ...
- 86岁还在录网课:MIT教授Gilbert Strang最新「线性代数」课程上线,被清华选作教材...
转自:机器之心 参与:张倩.Jamin.Raccon X 讲 MIT 线性代数经典课程的 Gilbert Strang 教授已经 86 岁高龄了.他的书被清华选作教材,课程吸引了国内外大批学子.如今疫 ...
- 线性代数与数据学习:MIT教授Gilbert Strang帮你打下坚实的数学基础
机器之心编辑,作者:思源.刘晓坤. MIT 教授 Gilbert Strang 最新书籍<线性代数与数据学习>(Linear Algebra and Learning from Data) ...
最新文章
- 圆桌讨论:人工智能的未来
- 直接插入排序(内部排序)
- 微軟平台的管理專家 - Microsoft Operations Manager (MOM)
- 漫画:什么是SHA系列算法
- python环境变量的运用_Windows下python环境变量配置
- php shell exec 阻塞,php shell_exec()vs exec()
- HDU 1018 Big Number
- python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案
- 什么是CMMI认证?
- 你家的猫也能来段东北话了:快手快影一键「智能配音」,三种方言随意换,还能配出《舌尖》风...
- 开源究竟差哪了--- 关于开源软件和自由软件的区别
- win10忘记密码——无需启动盘修改密码
- 【食安云桥】python 文件内批量长度除以3.5替换
- 什么是面向对象?谈谈你对面向对象的理解
- C语言编程练习之水仙花数
- 面试官出的APP测试问题
- ethereumjs/ethereumjs-icap
- 微信公众号/微信小程序获取用户信息以及推送微信模版消息_MQ
- 为什么ThinkPad国行版这么贵?
- c语言十六转十进制,C语言 · 十六进制转十进制