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

矩阵分解

  • 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​=⎣⎢⎢⎢⎢⎡​1​1​⋱eij​​1​1​⎦⎥⎥⎥⎥⎤​
其作用是
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] Eij​A=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡​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​=⎣⎢⎢⎢⎢⎡​1​1​⋱−eij​​1​1​⎦⎥⎥⎥⎥⎤​

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

通过高斯消元法,可以将可逆矩阵化为单位矩阵,但是此时左乘的矩阵不仅仅是消元矩阵,而是涉及到所有初等行变换。如果将合作用依然写作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)−li1​row 1(U)−li2​row 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)=li1​row 1(U)+li2​row 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)1​ln1​​1⋮l(n−1)2​ln2​​⋱⋯​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)1​ln1​​1⋮l(n−1)2​ln2​​⋱⋯​1ln(n−1)​​1​⎦⎥⎥⎥⎥⎥⎤​

置换矩阵 PermutationmatricesPermutation\ matricesPermutation matrices

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

置换矩阵有如下性质:

  1. PT=P−1(orthogonal)P^T=P^{-1}(orthogonal)PT=P−1(orthogonal)
  2. 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] [2​13​]=[2​3​][1​21​1​]

秩一矩阵的分解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] [12​48​510​]=[12​][1​4​5​]
秩一矩阵就像构造其他矩阵的积木一样,比如一个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=[λ1​x1​ λ2​x2​⋯λn​xn​]
分离特征值和特征向量
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)σi​ui​=Avi​(σ is a stretching factor),当然并不是行空间的任意一组正交基,都能在都左乘AAA后,仍然保持正交。这个不影响分解
σiui=Avi\sigma_iu_i=Av_iσi​ui​=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∗r​O(m−r)∗r​​Or∗(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∗r​O(m−r)∗r​​Or∗(n−r)​O(m−r)∗(n−r)​​]m∗n​[VC(AT)r∗nT​VN(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[ΣO​OO​]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∗r​O(n−r)∗r​​Or∗(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^TAATATAA^TAATA不一定是正定的,但至少他们都是半正定的
而且AATAA^TAATATAA^TAATA有相同的特征值,这不是偶然ABABAB和BABABA当然有相同的特征值

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

再议对称矩阵

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

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

  1. [笔记][总结] MIT线性代数 Gilbert Strang 矩阵的应用

    作者水平有限,欢迎大家提出文中错误 矩阵的应用 电路理论 图的矩阵表示--邻接矩阵 回路 零空间 左零空间 Ohm′slawOhm's\ lawOhm′s law 再议回路 外部电源 电路理论的三个核 ...

  2. [笔记][总结] MIT线性代数 Gilbert Strang 对称矩阵

    作者水平有限,欢迎大家提出文中错误 正定性与对称矩阵 对称矩阵 对称矩阵的对角化 正定性 正定矩阵判据 正定矩阵的性质 正定性与最小二乘法 二次型 对称矩阵的LU分解与二次型的配方 连续多元函数在某点 ...

  3. [笔记][总结] MIT线性代数 Gilbert Strang 矩阵运算

    作者水平有限,欢迎大家提出文中错误 矩阵运算 转置 转置的性质 求逆 使用高斯消元法求解逆矩阵 矩阵逆的代数表达式 Cramer′sruleCramer's\ ruleCramer′s rule 方阵 ...

  4. [笔记][总结] MIT线性代数 Gilbert Strang 正交矩阵

    作者水平有限,欢迎大家提出文中错误 正交性与正交矩阵 正交性 标准正交矩阵 投影矩阵 一维情况 最小二乘法 回到投影矩阵 投影矩阵的若干性质 再述最小二乘法 Gram-Schmidt正交化 A=QRA ...

  5. [笔记][总结] MIT线性代数 Gilbert Strang 向量空间

    作者水平有限,欢迎大家提出文中错误 向量空间与四个基本子空间 向量空间 线性子空间 四个基本子空间 C(A):columnspaceofAC(A):column\ space\ of \ AC(A): ...

  6. [笔记][总结] MIT线性代数 Gilbert Strang 线性方程组

    作者水平有限,欢迎大家提出文中错误 矩阵方程.线性方程组 Ax=bAx=bAx=b的行图像 Ax=bAx=bAx=b的列图像 齐次方程Ax=0Ax=0Ax=0 非齐次方程Ax=bAx=bAx=b Ax ...

  7. 86岁还在录网课:MIT教授Gilbert Strang最新「线性代数」课程上线

    机器之心报道 参与:张倩.Jamin.Raccon X 讲 MIT 线性代数经典课程的 Gilbert Strang 教授已经 86 岁高龄了.他的书被清华选作教材,课程吸引了国内外大批学子.如今疫情 ...

  8. 86岁还在录网课:MIT教授Gilbert Strang最新「线性代数」课程上线,被清华选作教材...

    转自:机器之心 参与:张倩.Jamin.Raccon X 讲 MIT 线性代数经典课程的 Gilbert Strang 教授已经 86 岁高龄了.他的书被清华选作教材,课程吸引了国内外大批学子.如今疫 ...

  9. 线性代数与数据学习:MIT教授Gilbert Strang帮你打下坚实的数学基础

    机器之心编辑,作者:思源.刘晓坤. MIT 教授 Gilbert Strang 最新书籍<线性代数与数据学习>(Linear Algebra and Learning from Data) ...

最新文章

  1. 圆桌讨论:人工智能的未来
  2. 直接插入排序(内部排序)
  3. 微軟平台的管理專家 - Microsoft Operations Manager (MOM)
  4. 漫画:什么是SHA系列算法
  5. python环境变量的运用_Windows下python环境变量配置
  6. php shell exec 阻塞,php shell_exec()vs exec()
  7. HDU 1018 Big Number
  8. python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案
  9. 什么是CMMI认证?
  10. 你家的猫也能来段东北话了:快手快影一键「智能配音」,三种方言随意换,还能配出《舌尖》风...
  11. 开源究竟差哪了--- 关于开源软件和自由软件的区别
  12. win10忘记密码——无需启动盘修改密码
  13. 【食安云桥】python 文件内批量长度除以3.5替换
  14. 什么是面向对象?谈谈你对面向对象的理解
  15. C语言编程练习之水仙花数
  16. 面试官出的APP测试问题
  17. ethereumjs/ethereumjs-icap
  18. 微信公众号/微信小程序获取用户信息以及推送微信模版消息_MQ
  19. 为什么ThinkPad国行版这么贵?
  20. c语言十六转十进制,C语言 · 十六进制转十进制

热门文章

  1. wwise集成到unreal
  2. matlab 日期加小时数_实验一 连续时间信号在Matlab中的运算
  3. Android填坑记录
  4. DCU和ECU的区别
  5. Zigbee Silabs 方案(EM3XX、EFR32)
  6. 【GO】 K8s 管理系统项目3[API部分--Daemonset]
  7. 使用telnet程序连接qq smtp协议邮箱服务器发送邮件
  8. CT117E LCD操作 学习笔记
  9. Netsuite本地化解决方案
  10. apereo cas开发_统一认证 - Apereo CAS 小试