文章目录
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=1∑n−1(n−k)(n−k+2)=3n3+2n2−65nk=1∑n−1(n−k+1)(n−k+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=b⇒x=(LU)−1b=U−1L−1b
实际应用中,矩阵
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=
1−245−79−336
-
基本假设:
- 矩阵为方阵,并且可逆
- 消元时不需要进行行交换
-
消元顺序
通常手动消元的时候,消元顺序不是固定的,但是在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 r2r1→r3r1→r4r1→r3r2→r4r2→r4r3,共消元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+⋅+(n−1)=2n(n−1)次消元。参考实例如下
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= 1−245−79−336 E21r2+2r1 1045393−36 E31r3−4r1 10053−113−318 E32r3+311r2 1005303−37 =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=
10−4010001
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=
1−2401−311001
原变换矩阵
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+2x1x2−2x1x3+2x2x3=(x1+x2−x3)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=
11−1121−116
对其进行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=
11−1121−116
E21[1−10010001]
10−1111−126
E31[101010001]
100112−125
E32[10001−2001]
100110−121
=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=
11−1012001
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=
11−1012001
100110−121
f=(x1+x2−x3)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×[1∗x1+1∗x2+(−1)∗x3]2+1×(1∗x2+2∗x3)2+1×(1∗x3)2=(x1+x2−x3)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分解比直接求逆求解的效率快百分之十五左右。
使用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+4x1x2−4x1x3+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=
02−2224−242
它的主元(位于第一行第一列的元素)为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+4x2x1−4x2x3+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′= 22420−24−22
正常进行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′= 22420−24−22 E21[1−10010001] 2042−2−24−62 E31[10−2010001] 2002−2−64−6−6 E32[10001−3001] 2002−204−612 =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= 1−E21(2,1)−E31(3,1)01−E32(3,2)001 = 112013001 A′=L′U′= 112013001 2002−204−612
此时,二次型为
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)2−2(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)2−2(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)2−2(x1+3x3)2+12x32=(2x12+4x1x2+8x1x3+2x22+8x2x3+8x32)−(2x12+12x1x3+18x32)+12x32=2x22+2x32+4x1x2−4x1x3+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
1001−302−30
- 处理方法,参考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×(1∗x1+1∗x2+2∗x3)2+(−3)×(1∗x2+2∗x3)2+0×(1∗x3)2=(x1+x2+2x3)2−3(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 1−200010000100001 2086117711990158 E31 10−40010000100001 2006113711590158 E32 100−3010000100001 E32 2000113411560158 E32 100001−3000100001 2000110411260128 E42 1000010−400100001 2000110011220124 E43 10000100001−10001 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