矩阵分解入门——LU分解

文章目录

  • LU分解
    • LU分解简介
    • LU分解与高斯分解的对比
    • LU的主要用途
    • 使用LU矩阵的注意事项
    • 初等矩阵与消元
    • LU分解与配方法
    • 实际效果对比(matlab)
    • 使用LU分解中的一些特例
      • A A A矩阵中主元(位于第一行第一列的元素)为0
      • LU分解后 U U U为非满秩
    • LU分解的推广1——LDU分解
    • LU分解的推广2——Crout分解

LU分解

LU分解简介

LU分解是矩阵因式分解的一种,也叫Doolittle分解。旨在将 A x = b Ax = b Ax=b中的矩阵 A A A表示为两个或多个矩阵的乘积。LU分解是将矩阵 A A A分解为一个下三角矩阵(Lower Triangular) L L L和一个上三角矩阵(Upper Triangular) U U U。形象一点可写为
A = ◣ × ◥ A = ◣ \times ◥ A=×

LU分解与高斯分解的对比

高斯分解法的乘法计算量为
分解过程的计算量: ∑ k = 1 n − 1 ( n − k ) ( n − k + 2 ) = n 3 3 + n 2 2 − 5 6 n 求解过程的计算量: ∑ k = 1 n − 1 ( n − k + 1 ) ( n − k + 2 ) = n 2 + n 2 \begin{split} 分解过程的计算量:&\sum_{k=1}^{n-1}(n-k)(n-k+2) \\ &= \frac {n^3}3 + \frac {n^2}{2} - \frac 56n\\ 求解过程的计算量:&\sum_{k=1}^{n-1}(n-k+1)(n-k+2) \\ &= \frac{n^2+n}{2} \end{split} 分解过程的计算量:求解过程的计算量:k=1n1(nk)(nk+2)=3n3+2n265nk=1n1(nk+1)(nk+2)=2n2+n
LU分解法的乘法计算量为
分解过程 A = L U 的计算量: 2 n 3 3 计算过程 L y = b 的计算量级: n 2 2 计算过程 U x = y 的计算量级: n 2 2 分解过程A = LU的计算量:\frac {2n^3}{3} \\ 计算过程Ly = b的计算量级: \frac{n^2}{2} \\ 计算过程Ux = y的计算量级: \frac{n^2}{2} \\ 分解过程A=LU的计算量:32n3计算过程Ly=b的计算量级:2n2计算过程Ux=y的计算量级:2n2

高斯消元法与LU分解的分解过程计算量都是 O ( n 3 ) O(n^3) O(n3)量级,求解过程是 O ( n 2 ) O(n^2) O(n2)量级。但是LU的分解过程可以离线处理好,在线使用时可以直接进入求解过程,这是LU分解相对高斯分解法的优点。

LU的主要用途

LU主要用来加快求解方程组的速度,常用于二次型矩阵求解。LU分解是接近中小规模、稠密矩阵的最好方法。假设 A = L U A = LU A=LU后,原方程 A x = b Ax=b Ax=b可写为 L U x = b LUx =b LUx=b,此时令 U x = y Ux=y Ux=y,即可通过一对方程来求解 x x x,写作
{ L y = b U x = y \begin{cases} Ly = b \\ Ux = y \end{cases}\\ {Ly=bUx=y
求解过程可转换为
L U x = b ⇒ x = ( L U ) − 1 b = U − 1 L − 1 b LUx = b \\ \begin{split} \\ \Rightarrow x &=(LU)^{-1}b \\ &= U^{-1}L^{-1}b \end{split} LUx=bx=(LU)1b=U1L1b
实际应用中,矩阵 A A A往往是固定的,而右侧向量 b b b经常会替换。当矩阵 A A A被分解后, L L L, U U U可充分利用,提高效率。

使用LU矩阵的注意事项

  • 有些有解的问题不能通过LU分解来求解
  • 如果某些主元过小,会引入较大的误差
    • 选主元时尽量选最大数所在的行,然后将其交换到第一行

初等矩阵与消元

以下以 A A A矩阵为例开展相关的LU分解
A = [ 1 5 − 3 − 2 − 7 3 4 9 6 ] A = \begin{bmatrix} 1 & 5 & -3 \\ -2 & -7 & 3 \\ 4 & 9 & 6 \end{bmatrix} A= 124579336

  • 基本假设:

    • 矩阵为方阵,并且可逆
    • 消元时不需要进行行交换
  • 消元顺序
    通常手动消元的时候,消元顺序不是固定的,但是在LU分解时,消元顺序是固定的,即以第一行为主元,依次向下消元,最终消元为一个上三角矩阵。如果是4*4的矩阵,消元顺序为 r 2 r 1 → r 3 r 1 → r 4 r 1 → r 3 r 2 → r 4 r 2 → r 4 r 3 r_2r_1 \rightarrow r_3r_1 \rightarrow r_4r_1 \rightarrow r_3r_2 \rightarrow r_4r_2 \rightarrow r_4r_3 r2r1r3r1r4r1r3r2r4r2r4r3,共消元6次;如果是n*n矩阵,则总共需要 1 + 2 + 3 + ⋅ + ( n − 1 ) = n ( n − 1 ) 2 1 + 2 +3 +\cdot + (n-1) = \displaystyle\frac{n(n-1)}{2} 1+2+3++(n1)=2n(n1)次消元。参考实例如下
    A = [ 1 5 − 3 − 2 − 7 3 4 9 6 ] → r 2 + 2 r 1 E 21 [ 1 5 3 0 3 − 3 4 9 6 ] → r 3 − 4 r 1 E 31 [ 1 5 3 0 3 − 3 0 − 11 18 ] → r 3 + 11 3 r 2 E 32 [ 1 5 3 0 3 − 3 0 0 7 ] = U A = \begin{bmatrix} 1 & 5 & -3 \\ -2 & -7 & 3 \\ 4 & 9 & 6 \end{bmatrix}\xrightarrow[r_2+2r_1]{E_{21}} \begin{bmatrix} 1 & 5 &3 \\0 & 3 &-3 \\4 & 9 & 6 \end{bmatrix} \xrightarrow[r_3-4r_1]{E_{31}} \begin{bmatrix} 1 & 5 &3 \\0 & 3 &-3 \\0 & -11 & 18 \end{bmatrix} \xrightarrow[r_3+\frac{11}{3}r_2]{E_{32}} \begin{bmatrix} 1 & 5 &3 \\0 & 3 &-3 \\0 & 0 & 7 \end{bmatrix} =U A= 124579336 E21 r2+2r1 104539336 E31 r34r1 10053113318 E32 r3+311r2 100530337 =U

上式中的消元变换过程为
E 32 E 31 E 21 A = U E_{32}E_{31}E_{21}A = U E32E31E21A=U

其中的变换矩阵写作矩阵形式,有
E 21 = [ 1 0 0 2 1 0 0 0 1 ] E 31 = [ 1 0 0 0 1 0 − 4 0 1 ] E 32 = [ 1 0 0 0 1 0 0 11 3 1 ] E_{21} = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} \hspace{1cm} E_{31} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ -4 & 0 & 1 \end{bmatrix} \hspace{1cm} E_{32} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & \frac{11}{3} & 1 \end{bmatrix} E21= 120010001 E31= 104010001 E32= 10001311001
因此,因式矩阵 A A A可写作
A = ( E 32 E 31 E 21 ) − 1 U = L U \begin{split} A &= (E_{32}E_{31}E_{21})^{-1}U \\ &=LU \end{split} A=(E32E31E21)1U=LU
式中有
E 32 E 31 E 21 = [ 1 0 0 2 1 0 10 3 11 3 1 ] L = ( E 32 E 31 E 21 ) − 1 = [ 1 0 0 − 2 1 0 4 − 11 3 1 ] \begin{split} E_{32}E_{31}E_{21} = \begin{bmatrix} 1 & 0 & 0 \\ 2 & 1 & 0 \\ \frac {10}{3} & \frac{11}{3} & 1 \end{bmatrix} \\ L = (E_{32}E_{31}E_{21})^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ -2 & 1 & 0 \\ 4 & -\frac{11}{3} & 1 \end{bmatrix} \\ \end{split} E32E31E21= 1231001311001 L=(E32E31E21)1= 12401311001
原变换矩阵 E 32 E 31 E 21 E_{32}E_{31}E_{21} E32E31E21,会在矩阵(3,1)中引入一个无实际意义的 10 3 \frac{10}{3} 310,而改写的 L L L矩阵,其中的(2,1)(3,1)(3,2)位置对应的则刚好均是初等变换矩阵 E 21 E_{21} E21 E 31 E_{31} E31 E 32 E_{32} E32中实际变换位置处元素的相反数,这就是LU分解的优点:只保留了消元过程中最关键的消元信息,同时其上/下三角矩阵形式减少了大量计算量。

LU分解与配方法

f = x 1 2 + 2 x 2 2 + 6 x 3 2 + 2 x 1 x 2 − 2 x 1 x 3 + 2 x 2 x 3 = ( x 1 + x 2 − x 3 ) 2 + ( x 2 + 2 x 3 ) 2 + x 3 2 \begin{split} f &= x_1^2 + 2x_2^2 + 6x_3^2 + 2x_1x_2- 2x_1x_3 + 2x_2x_3 \\ &= (x_1 + x_2 - x_3)^2 + (x_2 + 2x_3)^2 + x_3^2 \end{split} f=x12+2x22+6x32+2x1x22x1x3+2x2x3=(x1+x2x3)2+(x2+2x3)2+x32
上式中二次型所对应的矩阵 A A A
A = [ 1 1 − 1 1 2 1 − 1 1 6 ] A = \begin{bmatrix} 1 & 1 & -1 \\ 1 & 2 & 1 \\ -1 & 1 & 6 \end{bmatrix} A= 111121116
对其进行LU分解,过程可写作
A = [ 1 1 − 1 1 2 1 − 1 1 6 ] → [ 1 0 0 − 1 1 0 0 0 1 ] E 21 [ 1 1 − 1 0 1 2 − 1 1 6 ] → [ 1 0 0 0 1 0 1 0 1 ] E 31 [ 1 1 − 1 0 1 2 0 2 5 ] → [ 1 0 0 0 1 0 0 − 2 1 ] E 32 [ 1 1 − 1 0 1 2 0 0 1 ] = U A = \begin{bmatrix} 1 & 1 & -1 \\ 1 & 2 & 1 \\ -1 & 1 & 6 \end{bmatrix}\xrightarrow[\begin{bmatrix} 1 & 0 & 0 \\ -1 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}]{E_{21}} \begin{bmatrix} 1 & 1 &-1 \\0 & 1 & 2 \\-1 & 1 & 6 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{bmatrix}]{E_{31}} \begin{bmatrix} 1 & 1 & -1 \\0 & 1 & 2 \\0 & 2 & 5 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & -2 & 1 \end{bmatrix}]{E_{32}} \begin{bmatrix} 1 & 1 & -1 \\0 & 1 &2 \\0 & 0 & 1 \end{bmatrix} =U A= 111121116 E21 [110010001] 101111126 E31 [101010001] 100112125 E32 [100012001] 100110121 =U
其变换矩阵为
L = ( E 32 E 31 E 21 ) − 1 = [ 1 0 0 1 1 0 − 1 2 1 ] \begin{split} L = (E_{32}E_{31}E_{21})^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ -1 & 2 & 1 \end{bmatrix} \\ \end{split} L=(E32E31E21)1= 111012001
L L L U U U矩阵一个为上三角矩阵,另一个为下三角矩阵。 L L L矩阵中同样是对应位置为初等变换矩阵系数的相反数,例如 E 21 E_{21} E21的(2,1)位置的值为 L L L矩阵对应位置的相反数, E 31 E_{31} E31 E 32 E_{32} E32同理。此外还有
A = L U = [ 1 0 0 1 1 0 − 1 2 1 ] [ 1 1 − 1 0 1 2 0 0 1 ] f = ( x 1 + x 2 − x 3 ) 2 + ( x 2 + 2 x 3 ) 2 + x 3 2 A = LU = \begin{bmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ -1 & 2 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 & -1 \\0 & 1 &2 \\0 & 0 & 1 \end{bmatrix} \\ f = (x_1 + x_2 - x_3)^2 + (x_2 + 2x_3)^2 + x_3^2 A=LU= 111012001 100110121 f=(x1+x2x3)2+(x2+2x3)2+x32

注意 L L L的列以及 U U U的对角线

L L L每一列对应配方后每一个平方项中各个未知数的系数,而 U U U每个对角线上的值对应配方后每个平方项的系数,写作
f = 1 × [ 1 ∗ x 1 + 1 ∗ x 2 + ( − 1 ) ∗ x 3 ] 2 + 1 × ( 1 ∗ x 2 + 2 ∗ x 3 ) 2 + 1 × ( 1 ∗ x 3 ) 2 = ( x 1 + x 2 − x 3 ) 2 + ( x 2 + 2 x 3 ) 2 + x 3 2 \begin{split} f &= 1\times[1*x_1 + 1*x_2 + (-1)* x_3]^2 + 1\times(1 * x_2 + 2 * x_3)^2 + 1\times(1*x_3)^2 \\ &=(x_1 + x_2 - x_3)^2 + (x_2 + 2x_3)^2 + x_3^2 \end{split} f=1×[1x1+1x2+(1)x3]2+1×(1x2+2x3)2+1×(1x3)2=(x1+x2x3)2+(x2+2x3)2+x32

实际效果对比(matlab)

在matlab平台上对比直接求逆求解与LU分解的效率,代码如下

A = rand(10000,10000); %系数矩阵
B = rand(10000,1); %求解目标矩阵

tic
x = inv(A)*B;  % 利用求逆求解
toc

[L,U] = lu(A);  % LU分解
tic
x = (L*U)\B;
toc

结果如下

矩阵分解入门——LU分解_第1张图片

由上图可见,LU分解比直接求逆求解的效率快百分之十五左右。

使用LU分解中的一些特例

A A A矩阵中主元(位于第一行第一列的元素)为0

如果有一个待LU分解的二次型方程为
f = 2 x 2 2 + 2 x 3 2 + 4 x 1 x 2 − 4 x 1 x 3 + 8 x 2 x 3 f =2x_2^2 + 2x_3^2 + 4x_1x_2- 4x_1x_3 + 8x_2x_3 \\ f=2x22+2x32+4x1x24x1x3+8x2x3
它的 A A A矩阵为
A = [ 0 2 − 2 2 2 4 − 2 4 2 ] A = \begin{bmatrix} 0 & 2 & -2 \\ 2 & 2 & 4 \\ -2 & 4 & 2 \end{bmatrix} A= 022224242
它的主元(位于第一行第一列的元素)为0,不能直接进行LU分解。

  • 处理方法:矩阵变换之前先将 x 1 x_1 x1与任意一个二次项系数不为0的行( x n x_n xn)交换,在LU分解完之后换回 x 1 x_1 x1 x n x_n xn
    本例选择 x 1 x_1 x1 x 2 x_2 x2交换,原式改写为
    f ′ = 2 x 1 2 + 2 x 3 2 + 4 x 2 x 1 − 4 x 2 x 3 + 8 x 1 x 3 f' =2x_1^2 + 2x_3^2 + 4x_2x_1- 4x_2x_3 + 8x_1x_3 \\ f=2x12+2x32+4x2x14x2x3+8x1x3
    它的 A ′ A' A矩阵为
    A ′ = [ 2 2 4 2 0 − 2 4 − 2 2 ] A' = \begin{bmatrix} 2 & 2 & 4 \\ 2 & 0 & -2 \\ 4 & -2 & 2 \end{bmatrix} A= 224202422
    正常进行LU分解
    A ′ = [ 2 2 4 2 0 − 2 4 − 2 2 ] → [ 1 0 0 − 1 1 0 0 0 1 ] E 21 [ 2 2 4 0 − 2 − 6 4 − 2 2 ] → [ 1 0 0 0 1 0 − 2 0 1 ] E 31 [ 2 2 4 0 − 2 − 6 0 − 6 − 6 ] → [ 1 0 0 0 1 0 0 − 3 1 ] E 32 [ 2 2 4 0 − 2 − 6 0 0 12 ] = U ′ A' = \begin{bmatrix} 2 & 2 & 4 \\ 2 & 0 & -2 \\ 4 & -2 & 2 \end{bmatrix}\xrightarrow[\begin{bmatrix} 1 & 0 & 0 \\ -1 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}]{E_{21}} \begin{bmatrix} 2 & 2 &4 \\0 & -2 & -6 \\4 & -2 & 2 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ -2 & 0 & 1 \end{bmatrix}]{E_{31}} \begin{bmatrix} 2 & 2 &4 \\0 & -2 & -6 \\0 & -6 & -6 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & -3 & 1 \end{bmatrix}]{E_{32}} \begin{bmatrix} 2 & 2 &4 \\0 & -2 & -6 \\0 & 0 & 12 \end{bmatrix} =U' A= 224202422 E21 [110010001] 204222462 E31 [102010001] 200226466 E32 [100013001] 2002204612 =U
    所以有
    L ′ = ( E 32 E 31 E 21 ) − 1 = [ 1 0 0 − E 21 ( 2 , 1 ) 1 0 − E 31 ( 3 , 1 ) − E 32 ( 3 , 2 ) 1 ] = [ 1 0 0 1 1 0 2 3 1 ] A ′ = L ′ U ′ = [ 1 0 0 1 1 0 2 3 1 ] [ 2 2 4 0 − 2 − 6 0 0 12 ] L'= (E_{32}E_{31}E_{21})^{-1} = \begin{bmatrix} 1 & 0 &0 \\-E_{21}(2,1) & 1 & 0 \\-E_{31}(3,1) & -E_{32}(3,2) & 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 &0 \\1 & 1 & 0 \\2 & 3 & 1 \end{bmatrix}\\ A' = L'U' = \begin{bmatrix} 1 & 0 &0 \\1 & 1 & 0 \\2 & 3 & 1 \end{bmatrix} \begin{bmatrix} 2 & 2 &4 \\0 & -2 & -6 \\0 & 0 & 12 \end{bmatrix} L=(E32E31E21)1= 1E21(2,1)E31(3,1)01E32(3,2)001 = 112013001 A=LU= 112013001 2002204612
    此时,二次型为
    f ′ = 2 ( x 1 + x 2 + 2 x 3 ) 2 − 2 ( x 2 + 3 x 3 ) 2 + 12 x 3 2 f' = 2(x_1 + x_2 + 2x_3)^2 - 2 (x_2 + 3x_3)^2 + 12 x_3^2 f=2(x1+x2+2x3)22(x2+3x3)2+12x32
    换回 x 1 x_1 x1 x 2 x_2 x2,所以原式的二次型为
    f = 2 ( x 2 + x 1 + 2 x 3 ) 2 − 2 ( x 1 + 3 x 3 ) 2 + 12 x 3 2 f = 2(x_2 + x_1 + 2x_3)^2 - 2 (x_1 + 3x_3)^2 + 12 x_3^2 f=2(x2+x1+2x3)22(x1+3x3)2+12x32
  • 验证
    f = 2 ( x 2 + x 1 + 2 x 3 ) 2 − 2 ( x 1 + 3 x 3 ) 2 + 12 x 3 2 = ( 2 x 1 2 + 4 x 1 x 2 + 8 x 1 x 3 + 2 x 2 2 + 8 x 2 x 3 + 8 x 3 2 ) − ( 2 x 1 2 + 12 x 1 x 3 + 18 x 3 2 ) + 12 x 3 2 ⇒ = 2 x 2 2 + 2 x 3 2 + 4 x 1 x 2 − 4 x 1 x 3 + 8 x 2 x 3 \begin{split} f &= 2(x_2 + x_1 + 2x_3)^2 - 2 (x_1 + 3x_3)^2 + 12 x_3^2 \\ & = (2x_1^2 + 4x_1x_2 + 8x_1x_3 + 2x_2^2 + 8x_2x_3 + 8x_3^2) -\\ &\hspace{0.5cm}(2x_1^2+12x_1x_3 + 18x_3^2) + 12x_3^2 \\ \Rightarrow&= 2x_2^2 + 2x_3^2 + 4x_1x_2 - 4x_1x_3 + 8x_2x_3 \end{split} f=2(x2+x1+2x3)22(x1+3x3)2+12x32=(2x12+4x1x2+8x1x3+2x22+8x2x3+8x32)(2x12+12x1x3+18x32)+12x32=2x22+2x32+4x1x24x1x3+8x2x3
    结果与原式确实相等,说明该方法成立

LU分解后 U U U为非满秩

如果出现LU分解后 U U U为非满秩这种情况
A = L U = [ 1 0 0 1 1 0 2 1 1 ] [ 1 1 2 0 − 3 − 3 0 0 0 ] A = LU = \begin{bmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 2 & 1 & 1 \end{bmatrix} \begin{bmatrix} 1 & 1 & 2 \\0 & -3 &-3 \\0 & 0 & 0 \end{bmatrix} \\ A=LU= 112011001 100130230

  • 处理方法,参考LU分解与配方法中的基本公式进行计算,写作
    f = 1 × ( 1 ∗ x 1 + 1 ∗ x 2 + 2 ∗ x 3 ) 2 + ( − 3 ) × ( 1 ∗ x 2 + 2 ∗ x 3 ) 2 + 0 × ( 1 ∗ x 3 ) 2 = ( x 1 + x 2 + 2 x 3 ) 2 − 3 ( x 2 + 2 x 3 ) 2 \begin{split} f &=1\times(1*x_1 + 1*x_2 + 2* x_3)^2 + (-3)\times(1 * x_2 + 2 * x_3)^2 + 0\times(1*x_3)^2\\ &= (x_1 + x_2 + 2x_3)^2 -3(x_2 + 2x_3)^2 \end{split} f=1×(1x1+1x2+2x3)2+(3)×(1x2+2x3)2+0×(1x3)2=(x1+x2+2x3)23(x2+2x3)2

LU分解的推广1——LDU分解

  • 概念
    LU的推广形式为LDU, D D D为对角矩阵(Diagonal),形象一点可写作
    A = ◣ × ⋱ × ◥ A = ◣ \times \ddots \times ◥ A=××
    D D D中的元素是U中提取出的对角元素。

  • 一个实例
    A = [ 2 1 1 0 4 3 3 1 8 7 9 5 6 7 9 8 ] A = \begin{bmatrix} 2 & 1 & 1 & 0 \\ 4 & 3 & 3 & 1 \\ 8 & 7 & 9 & 5 \\ 6 & 7 & 9 & 8 \end{bmatrix} \\ A= 2486137713990158
    A = [ 2 1 1 0 4 3 3 1 8 7 9 5 6 7 9 8 ] → [ 1 0 0 0 − 2 1 0 0 0 0 1 0 0 0 0 1 ] E 21 [ 2 1 1 0 0 1 1 1 8 7 9 5 6 7 9 8 ] → [ 1 0 0 0 0 1 0 0 − 4 0 1 0 0 0 0 1 ] E 31 [ 2 1 1 0 0 1 1 1 0 3 5 5 6 7 9 8 ] → [ 1 0 0 0 0 1 0 0 0 0 1 0 − 3 0 0 1 ] E 32 → E 32 [ 2 1 1 0 0 1 1 1 0 3 5 5 0 4 6 8 ] → [ 1 0 0 0 0 1 0 0 0 − 3 1 0 0 0 0 1 ] E 32 [ 2 1 1 0 0 1 1 1 0 0 2 2 0 4 6 8 ] → [ 1 0 0 0 0 1 0 0 0 0 1 0 0 − 4 0 1 ] E 42 [ 2 1 1 0 0 1 1 1 0 0 2 2 0 0 2 4 ] → [ 1 0 0 0 0 1 0 0 0 0 1 0 0 0 − 1 1 ] E 43 → E 43 [ 2 1 1 0 0 1 1 1 0 0 2 2 0 0 0 2 ] = U \begin{split} &A = \begin{bmatrix} 2 & 1 & 1 & 0 \\ 4 & 3 & 3 & 1 \\ 8 & 7 & 9 & 5 \\ 6 & 7 & 9 & 8 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 & 0\\ -2 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}]{E_{21}} \begin{bmatrix} 2 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 8 & 7 & 9 & 5 \\ 6 & 7 & 9 & 8 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \\ -4 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}]{E_{31}} \begin{bmatrix} 2 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 3 & 5 & 5 \\ 6 & 7 & 9 & 8 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -3 & 0 & 0 & 1 \end{bmatrix}]{E_{32}} \\ &\xrightarrow{E_{32}} \begin{bmatrix} 2 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 3 & 5 & 5 \\ 0 & 4 & 6 & 8 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \\ 0 & -3 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}]{E_{32}} \begin{bmatrix} 2 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 2 & 2 \\ 0 & 4 & 6 & 8 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & -4 & 0 & 1 \end{bmatrix}]{E_{42}} \begin{bmatrix} 2 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 2 & 2 \\ 0 & 0 & 2 & 4 \end{bmatrix} \xrightarrow[\begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & -1 & 1 \end{bmatrix}]{E_{43}} \\ &\xrightarrow{E_{43}} \begin{bmatrix} 2 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 2 & 2 \\ 0 & 0 & 0 & 2 \end{bmatrix} =U \end{split} A= 2486137713990158 E21 1200010000100001 2086117711990158 E31 1040010000100001 2006113711590158 E32 1003010000100001 E32 2000113411560158 E32 1000013000100001 2000110411260128 E42 1000010400100001 2000110011220124 E43 1000010000110001 E43 2000110011200122 =U
    A = L U = [ 1 0 0 0 2 1 0 0 4 3 1 2 3 4 1 1 ] [ 2 1 1 0 0 1 1 1 0 0 2 2 0 0 0 2 ] A = LU = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 2 & 1 & 0 & 0 \\ 4 & 3 & 1 & 2 \\ 3 & 4 & 1 & 1 \end{bmatrix} \begin{bmatrix} 2 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 2 & 2 \\ 0 & 0 & 0 & 2 \end{bmatrix} A=LU= 1243013400110021 2000110011200122
    转写为LDU分解即为
    A = L D U = [ 1 0 0 0 2 1 0 0 4 3 1 2 3 4 1 1 ] [ 2 1 2 2 ] [ 1 1 2 1 2 0 0 1 1 1 0 0 1 1 0 0 0 1 ] A = LDU = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 2 & 1 & 0 & 0 \\ 4 & 3 & 1 & 2 \\ 3 & 4 & 1 & 1 \end{bmatrix} \begin{bmatrix} 2 & & & \\ & 1 & & \\ & & 2 & \\ & & & 2 \end{bmatrix} \begin{bmatrix} 1 & \frac 12 & \frac 12 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 \end{bmatrix} A=LDU= 1243013400110021 2122 100021100211100111

LU分解的推广2——Crout分解

Crout分解即是在LDU分解的基础上,把LD的乘积作为另一个矩阵,写作
A = L D U = [ 1 0 0 0 2 1 0 0 4 3 1 2 3 4 1 1 ] [ 2 1 2 2 ] [ 1 1 2 1 2 0 0 1 1 1 0 0 1 1 0 0 0 1 ] C r o u t 分解 ⇒ [ 2 0 0 0 4 1 0 0 8 3 2 4 6 4 2 2 ] [ 1 1 2 1 2 0 0 1 1 1 0 0 1 1 0 0 0 1 ] \begin{split} &A = LDU = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 2 & 1 & 0 & 0 \\ 4 & 3 & 1 & 2 \\ 3 & 4 & 1 & 1 \end{bmatrix} \begin{bmatrix} 2 & & & \\ & 1 & & \\ & & 2 & \\ & & & 2 \end{bmatrix} \begin{bmatrix} 1 & \frac 12 & \frac 12 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 \end{bmatrix} \\ &Crout分解 \Rightarrow \begin{bmatrix} 2 & 0 & 0 & 0 \\ 4 & 1 & 0 & 0 \\ 8 & 3 & 2 & 4 \\ 6 & 4 & 2 & 2 \end{bmatrix} \begin{bmatrix} 1 & \frac 12 & \frac 12 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 \end{bmatrix} \\ \end{split} A=LDU= 1243013400110021 2122 100021100211100111 Crout分解 2486013400220042 100021100211100111

你可能感兴趣的:(数学基础,矩阵,线性代数,算法)