矩阵的三角分解

设实矩阵 A \boldsymbol{A} A的各阶主子式 ∣ A i i ∣ ≠ 0 ( i = 1 , 2 , ⋯   , n ) |\boldsymbol{A}_{ii}|\ne 0(i=1,2,\cdots,n) ∣Aii​∣​=0(i=1,2,⋯,n),则可以对 A \boldsymbol{A} A进行如下分解: A = L U \boldsymbol{A}=\boldsymbol{LU} A=LU其中, L \boldsymbol{L} L为主对角元素全为1的下三角矩阵(即单位下三角矩阵), U \boldsymbol{U} U为上三角矩阵,称这种分解为矩阵的三角分解,也称为 L U \boldsymbol{LU} LU分解。
下面从高斯消去法的基本原理来说明这种分解的具体过程。在高斯消去法中,只是主对角线上的元素不是1。因此,在没有归一化的消去法中,实际上就是通过一系列的初等行变换依次将主对角线以下的元素消成0,而这一系列的初等行变换就相当于用一系列的初等矩阵左乘矩阵 A \boldsymbol{A} A。
首先,为了使矩阵 A \boldsymbol{A} A的第一列中以下的元素变为0,可以用一个初等矩阵 L 1 = [ 1 − l 21 1 − l 31 0 1 ⋮ ⋮ ⋮ ⋱ − l n 1 0 0 ⋯ 1 ] \boldsymbol{L}_1=\left[\begin{array}{ccccc}1 &&&\\ -l_{21}&1 &&&\\ -l_{31}&0&1&&\\ \vdots& \vdots &\vdots&\ddots&\\ -l_{n1}&0&0 &\cdots &1\end{array}\right] L1​=⎣⎢⎢⎢⎢⎢⎡​1−l21​−l31​⋮−ln1​​10⋮0​1⋮0​⋱⋯​1​⎦⎥⎥⎥⎥⎥⎤​左乘矩阵 A \boldsymbol{A} A,即 L 1 A = [ 1 − l 21 1 − l 31 0 1 ⋮ ⋮ ⋮ ⋱ − l n 1 0 0 ⋯ 1 ] [ a 11 a 12 a 13 ⋯ a 1 n a 21 a 22 a 23 ⋯ a 2 n a 31 a 32 a 33 ⋯ a 3 n ⋮ ⋮ ⋮ ⋮ ⋮ a n 1 a n 2 a n 3 ⋯ a n n ] = [ a 11 a 12 a 13 ⋯ a 1 n 0 a 22 ( 1 ) a 23 ( 1 ) ⋯ a 2 n ( 1 ) 0 a 32 ( 1 ) a 33 ( 1 ) ⋯ a 3 n ( 1 ) ⋮ ⋮ ⋮ ⋮ ⋮ 0 a n 2 ( 1 ) a n 3 ( 1 ) ⋯ a n n ( 1 ) ] = A 1 \begin{aligned}\boldsymbol{L}_1\boldsymbol{A}&=\left[\begin{array}{ccccc}1 &&&&\\ -l_{21}&1 &&&\\ -l_{31}&0&1&&\\ \vdots& \vdots &\vdots&\ddots&\\ -l_{n1}&0&0 &\cdots &1\end{array}\right]\left[\begin{array}{ccccc}a_{11} &a_{12}&a_{13}& \cdots&a_{1n}\\ a_{21} &a_{22}&a_{23}& \cdots&a_{2n}\\ a_{31} &a_{32}&a_{33}& \cdots&a_{3n}\\ \vdots& \vdots &\vdots&\vdots&\vdots\\ a_{n1} &a_{n2}&a_{n3}& \cdots&a_{nn}\end{array}\right]\\&=\left[\begin{array}{ccccc}a_{11} &a_{12}&a_{13}& \cdots&a_{1n}\\ 0 &a_{22}^{(1)}&a_{23}^{(1)}& \cdots&a_{2n}^{(1)}\\ 0 &a_{32}^{(1)}&a_{33}^{(1)}& \cdots&a_{3n}^{(1)}\\ \vdots& \vdots &\vdots&\vdots&\vdots\\ 0 &a_{n2}^{(1)}&a_{n3}^{(1)}& \cdots&a_{nn}^{(1)}\end{array}\right]=\boldsymbol{A}_1\end{aligned} L1​A​=⎣⎢⎢⎢⎢⎢⎡​1−l21​−l31​⋮−ln1​​10⋮0​1⋮0​⋱⋯​1​⎦⎥⎥⎥⎥⎥⎤​⎣⎢⎢⎢⎢⎢⎡​a11​a21​a31​⋮an1​​a12​a22​a32​⋮an2​​a13​a23​a33​⋮an3​​⋯⋯⋯⋮⋯​a1n​a2n​a3n​⋮ann​​⎦⎥⎥⎥⎥⎥⎤​=⎣⎢⎢⎢⎢⎢⎢⎡​a11​00⋮0​a12​a22(1)​a32(1)​⋮an2(1)​​a13​a23(1)​a33(1)​⋮an3(1)​​⋯⋯⋯⋮⋯​a1n​a2n(1)​a3n(1)​⋮ann(1)​​⎦⎥⎥⎥⎥⎥⎥⎤​=A1​​为了使上式运算成立,初等矩阵 L 1 L_1 L1​中的元素 l i j l_{ij} lij​必须满足下列关系: a i 1 − l i 1 a 11 = 0 , i = 2 , 3 , ⋯   , n a_{i1}-l_{i1}a_{11}=0,\quad i=2,3,\cdots,n ai1​−li1​a11​=0,i=2,3,⋯,n即 l i 1 = a i 1 / a 11 , i = 2 , 3 , ⋯   , n l_{i1}=a_{i1}/a_{11},\quad i=2,3,\cdots,n li1​=ai1​/a11​,i=2,3,⋯,n而在新矩阵中,除第一行外,其余各元素相应满足下列关系: a i j ( 1 ) = a i j − l i 1 a 1 j , i = 2 , 3 , ⋯   , n ; j = 2 , 3 , ⋯   , n a_{ij}^{(1)}=a_{ij}-l_{i1}a_{1j},\quad i=2,3,\cdots,n; j=2,3,\cdots,n aij(1)​=aij​−li1​a1j​,i=2,3,⋯,n;j=2,3,⋯,n按以上方法继续往下做。假设已经做了 k − 1 k-1 k−1步,原矩阵 A \boldsymbol{A} A已经变为 A k − 1 = L k − 1 ⋯ L 2 L 1 A = [ a 11 a 12 a 13 ⋯ a 1 k a 1 , k + 1 ⋯ a 1 n 0 a 22 ( 1 ) a 23 ( 1 ) ⋯ a 2 k ( 1 ) a 2 , k + 1 ( 1 ) ⋯ a 2 n ( 1 ) 0 0 a 33 ( 2 ) ⋯ a 3 k ( 2 ) a 3 , k + 1 ( 2 ) ⋯ a 3 n ( 2 ) ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 0 ⋯ a k k ( k − 1 ) a k , k + 1 ( k − 1 ) ⋯ a k n ( k − 1 ) ⋮ ⋮ ⋮ ⋯ ⋮ ⋮ ⋮ ⋮ 0 0 0 ⋯ a n , k ( k − 1 ) a n , k + 1 ( k − 1 ) ⋯ a n n ( k − 1 ) ] \begin{aligned}\boldsymbol{A}_{k-1}&=\boldsymbol{L}_{k-1}\cdots \boldsymbol{L}_{2}\boldsymbol{L}_{1}\boldsymbol{A}\\&=\left[\begin{array}{cccccccc}a_{11} &a_{12}&a_{13}& \cdots&a_{1k}& a_{1,k+1}& \cdots & a_{1n}\\ 0 &a_{22}^{(1)}&a_{23}^{(1)}& \cdots&a_{2k}^{(1)}& a_{2,k+1}^{(1)}& \cdots & a_{2n}^{(1)}\\ 0 & 0 &a_{33}^{(2)}& \cdots&a_{3k}^{(2)}& a_{3,k+1}^{(2)}&\cdots& a_{3n}^{(2)}\\ \vdots& \vdots &\vdots&\vdots&\vdots&\vdots & \vdots &\vdots\\ 0 & 0 & 0 & \cdots &a_{kk}^{(k-1)}& a_{k,k+1}^{(k-1)}& \cdots& a_{kn}^{(k-1)} \\ \vdots& \vdots & \vdots &\cdots & \vdots & \vdots & \vdots & \vdots\\ 0 & 0 & 0 &\cdots& a^{(k-1)}_{n,k}&a_{n,k+1}^{(k-1)}&\cdots &a^{(k-1)}_{nn}\end{array}\right]\end{aligned} Ak−1​​=Lk−1​⋯L2​L1​A=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​a11​00⋮0⋮0​a12​a22(1)​0⋮0⋮0​a13​a23(1)​a33(2)​⋮0⋮0​⋯⋯⋯⋮⋯⋯⋯​a1k​a2k(1)​a3k(2)​⋮akk(k−1)​⋮an,k(k−1)​​a1,k+1​a2,k+1(1)​a3,k+1(2)​⋮ak,k+1(k−1)​⋮an,k+1(k−1)​​⋯⋯⋯⋮⋯⋮⋯​a1n​a2n(1)​a3n(2)​⋮akn(k−1)​⋮ann(k−1)​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​​现在进行第 k k k步变换,即 A k = L k A k − 1 = [ a 11 a 12 a 13 ⋯ a 1 k a 1 , k + 1 ⋯ a 1 n 0 a 22 ( 1 ) a 23 ( 1 ) ⋯ a 2 k ( 1 ) a 2 , k + 1 ( 1 ) ⋯ a 2 n ( 1 ) 0 0 a 33 ( 2 ) ⋯ a 3 k ( 2 ) a 3 , k + 1 ( 2 ) ⋯ a 3 n ( 2 ) ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 0 ⋯ a k k ( k − 1 ) a k , k + 1 ( k − 1 ) ⋯ a k n ( k − 1 ) ⋮ ⋮ ⋮ ⋯ ⋮ ⋮ ⋮ ⋮   0 0 0 ⋯ 0 a n , k + 1 ( k − 1 ) ⋯ a n n ( k − 1 ) ] \begin{aligned}\boldsymbol{A}_{k}&=\boldsymbol{L}_{k}\boldsymbol{A}_{k-1}\\&=\left[\begin{array}{cccccccc}a_{11} &a_{12}&a_{13}& \cdots&a_{1k}& a_{1,k+1}& \cdots & a_{1n}\\ 0 &a_{22}^{(1)}&a_{23}^{(1)}& \cdots&a_{2k}^{(1)}& a_{2,k+1}^{(1)}& \cdots & a_{2n}^{(1)}\\ 0 & 0 &a_{33}^{(2)}& \cdots&a_{3k}^{(2)}& a_{3,k+1}^{(2)}&\cdots& a_{3n}^{(2)}\\ \vdots& \vdots &\vdots&\vdots&\vdots&\vdots & \vdots &\vdots\\ 0 & 0 & 0 & \cdots &a_{kk}^{(k-1)}& a_{k,k+1}^{(k-1)}& \cdots& a_{kn}^{(k-1)} \\ \vdots& \vdots & \vdots &\cdots & \vdots & \vdots & \vdots & \vdots\\\ 0 & 0 & 0 &\cdots& 0 &a_{n,k+1}^{(k-1)}&\cdots &a^{(k-1)}_{nn}\end{array}\right]\end{aligned} Ak​​=Lk​Ak−1​=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​a11​00⋮0⋮ 0​a12​a22(1)​0⋮0⋮0​a13​a23(1)​a33(2)​⋮0⋮0​⋯⋯⋯⋮⋯⋯⋯​a1k​a2k(1)​a3k(2)​⋮akk(k−1)​⋮0​a1,k+1​a2,k+1(1)​a3,k+1(2)​⋮ak,k+1(k−1)​⋮an,k+1(k−1)​​⋯⋯⋯⋮⋯⋮⋯​a1n​a2n(1)​a3n(2)​⋮akn(k−1)​⋮ann(k−1)​​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​​其中 L k = [ 1 0 1 0 0 1 ⋮ ⋮ ⋮ ⋱ 0 0 0 ⋯ 1 0 0 0 ⋯ − l k + 1 , k 1 ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ 0 0 0 ⋯ − l n k 0 ⋯ 1 ] \boldsymbol{L}_k=\left[ \begin{array}{cccccccc}1&&&&&&&\\0&1&&&&&&\\0&0&1&&&&&\\\vdots&\vdots &\vdots &\ddots &&&&\\ 0 & 0 & 0 &\cdots&1&&&\\ 0&0&0&\cdots&-l_{k+1,k}&1&&\\ \vdots&\vdots&\vdots&&\vdots&\vdots&\ddots&\\0&0&0&\cdots&-l_{nk}&0&\cdots&1\end{array}\right] Lk​=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​100⋮00⋮0​10⋮00⋮0​1⋮00⋮0​⋱⋯⋯⋯​1−lk+1,k​⋮−lnk​​1⋮0​⋱⋯​1​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​同样,为了使上式运算从成立,初等矩阵 L k \boldsymbol{L}_k Lk​中元素 l i k l_{ik} lik​必须满足下列关系: a i j ( k ) = a k j ( k − 1 ) − l i k a k j ( k − 1 ) , i = k + 1 , ⋯   , n ; j = k + 1 , ⋯   , n a^{(k)}_{ij}=a_{kj}^{(k-1)}-l_{ik}a_{kj}^{(k-1)},\quad i=k+1,\cdots,n;j=k+1,\cdots,n aij(k)​=akj(k−1)​−lik​akj(k−1)​,i=k+1,⋯,n;j=k+1,⋯,n如此继续下去,则有 A n − 1 = L n − 1 ⋯ L k ⋯ L 2 L 1 A \boldsymbol{A}_{n-1}=\boldsymbol{L}_{n-1}\cdots \boldsymbol{L}_k\cdots \boldsymbol{L}_2 \boldsymbol{L}_1 \boldsymbol{A} An−1​=Ln−1​⋯Lk​⋯L2​L1​A其中, A n − 1 \boldsymbol{A}_{n-1} An−1​为上三角矩阵。令 U = A n − 1 \boldsymbol{U}=\boldsymbol{A}_{n-1} U=An−1​,则有 U = L n − 1 ⋯ L k ⋯ L 2 L 1 A \boldsymbol{U}=\boldsymbol{L}_{n-1}\cdots\boldsymbol{L}_{k}\cdots \boldsymbol{L}_2 \boldsymbol{L}_1 \boldsymbol{A} U=Ln−1​⋯Lk​⋯L2​L1​A最后得到 A = L U \boldsymbol{A}=\boldsymbol{LU} A=LU由此可以看出,矩阵 A \boldsymbol{A} A在一定条件下(各阶主子式异于零)可以分解成单位下三角矩阵 A \boldsymbol{A} A和上三角矩阵 U \boldsymbol{U} U的乘积。

上一篇:阿里云云效——或许也是个人项目管理工具


下一篇:STM32普通定时器实现延时函数