2.6 Elimination=Factorization A=LU - A的LU分解
许多线性代数的核心观点,在仔细审视之后容易发现,其实都是一个矩阵的「因式分解」
原始的矩阵A通过一系列的变化可以变为2个或3个矩阵的点积,以下「因式分解」方法来自于消元
因式L与U都是三角矩阵,从消元得到的「因式分解」的结果为 A = L U A=LU A=LU
矩阵U是一个上三角矩阵,对角线上都是主元,消元的步骤就是从A到U
将这些步骤倒置,从U到A的过程,需要矩阵L来完成,其每一项的操作与U相反
(
E
32
E
31
E
21
)
A
=
U
becomes
A
=
(
E
21
−
1
)
(
E
31
−
1
)
(
E
32
−
1
)
U
which is
A
=
L
U
(E_{32}E_{31}E_{21})A=U\quad \text{becomes}\quad A=(E_{21}^{-1})(E_{31}^{-1})(E_{32}^{-1})U\quad \text{which is}\quad A=LU
(E32E31E21)A=UbecomesA=(E21−1)(E31−1)(E32−1)Uwhich isA=LU
以上三个矩阵的逆的顺序与消元的顺序相反,三个逆矩阵的点积就是L,现在来深入理解一下其含义
Explanation and Examples - 解释与举例
我们假设消元过程中没有行交换的操作
每一个逆矩阵 E − 1 E^{-1} E−1都是一个下三角矩阵,它的非对角线元素 l i j l_{ij} lij执行的操作与消元过程相反
在前几节笔记中提高过,消元矩阵E一般形如
E
A
=
[
1
0
0
−
2
1
0
0
0
1
]
[
2
4
−
2
4
9
−
3
−
2
−
3
7
]
=
[
2
4
−
2
0
1
1
−
2
−
3
7
]
E A=\left[\begin{array}{rrr}{1} & {0} & {0} \\{-2} & {1} & {0} \\{0} & {0} & {1}\end{array}\right]\left[\begin{array}{rrr}{2} & {4} & {-2} \\{4} & {9} & {-3} \\{-2} & {-3} & {7}\end{array}\right]=\left[\begin{array}{rrr}{2} & {4} & {-2} \\{0} & {1} & {1} \\{-2} & {-3} & {7}\end{array}\right]
EA=⎣⎡1−20010001⎦⎤⎣⎡24−249−3−2−37⎦⎤=⎣⎡20−241−3−217⎦⎤
由此可知,消元矩阵的逆也是对角线上均为1的矩阵,因而所有逆矩阵的点积L的对角线的项也都为1,例如
A
=
[
2
1
0
1
2
1
0
1
2
]
=
[
1
0
0
1
2
1
0
0
2
3
1
]
[
2
1
0
0
3
2
1
0
0
4
3
]
=
L
U
A=\left[\begin{array}{lll}2 & 1 & 0 \\1 & 2 & 1 \\0 & 1 & 2\end{array}\right]=\left[\begin{array}{ccc}1 & 0 & 0 \\\frac{1}{2} & 1 & 0 \\0 & \frac{2}{3} & 1\end{array}\right]\left[\begin{array}{lll}2 & 1 & 0 \\0 & \frac{3}{2} & 1 \\0 & 0 & \frac{4}{3}\end{array}\right]=L U
A=⎣⎡210121012⎦⎤=⎣⎡12100132001⎦⎤⎣⎡20012300134⎦⎤=LU
在什么时候我们可以预测L和U中有zeros
的存在,即一个或多个0
-
当A的某一行以
zeros
开头时,那L的那一行也是如此因为该行的前若干个0说明此处不用消元
-
当A的某一列以
zeros
开头时,那U的那一列也是如此因为该列的前若干个0的位置在消元中不会变化
A可以转化为LU的关键原因在于:
当我们进行这个消元过程的时候,从下一行减去上一个主元行的时候,减去的并不一定是原来A中的行,而对应的是U中的行,因为当上一个主元行已经经过了若干个消元的步骤,成为主元行之后,就变成了U中的行。
例如我们要得到矩阵U的第三行
Row 3 of U
=
Row 3 of A
−
l
31
Row 1 of U
−
l
32
Row 2 of U
\text{Row 3 of U} =\text{Row 3 of A}-l_{31}\text{Row 1 of U}-l_{32}\text{Row 2 of U}
Row 3 of U=Row 3 of A−l31Row 1 of U−l32Row 2 of U
重写上面的式子我们来看看逆过程是如何的
Row 3 of A
=
l
31
(
Row 1 of U
)
+
l
32
(
Row 2 of U
)
+
1
(
Row 3 of U
)
\text{Row 3 of A} =l_{31}(\text{Row 1 of U})+l_{32}(\text{Row 2 of U})+1(\text{Row 3 of U})
Row 3 of A=l31(Row 1 of U)+l32(Row 2 of U)+1(Row 3 of U)
从LDU
中得到更好的平衡
从上面的 A = L U A=LU A=LU的例子中可以看出U的对角线上均为主元,而相对于的L的对角线上均为1
因为我们将上三角矩阵U除以一个对角矩阵D,该对角矩阵包含了U的主元
这就产生了一个新的上三角矩阵U,其对角线上均为1
Split
U
into
[
d
1
d
2
⋱
d
n
]
[
1
u
12
/
d
1
u
12
/
d
1
⋅
1
u
23
/
d
2
⋅
⋱
⋮
1
]
\text { Split } U \text { into }\begin{bmatrix}d_1& & & \\&d_2& & &\\& & \ddots&\\& & & d_n\end{bmatrix}\begin{bmatrix}1 & u_{12}/d_1 & u_{12}/d_1&\cdot\\& 1 &u_{23}/d_2&\cdot\\& & \ddots&\vdots\\& & &1\end{bmatrix}
Split U into ⎣⎢⎢⎡d1d2⋱dn⎦⎥⎥⎤⎣⎢⎢⎢⎡1u12/d11u12/d1u23/d2⋱⋅⋅⋮1⎦⎥⎥⎥⎤
因而矩阵A的三角分解可以表示为:
A
=
L
U
or
A
=
L
D
U
A=LU \quad \text{or}\quad A=LDU
A=LUorA=LDU
[ 1 0 3 1 ] [ 2 8 0 5 ] splits further into [ 1 0 3 1 ] [ 2 5 ] [ 1 4 0 1 ] \left[\begin{array}{ll}1 & 0 \\3 & 1\end{array}\right]\left[\begin{array}{ll}2 & 8 \\0 & 5\end{array}\right] \quad \text { splits further into } \quad\left[\begin{array}{ll}1 & 0 \\3 & 1\end{array}\right]\left[\begin{array}{ll}2 & \\&5\end{array}\right]\left[\begin{array}{ll}1 & 4 \\0 & 1\end{array}\right] [1301][2085] splits further into [1301][25][1041]
The Cost of Elimination - 消元的时间复杂度
消元的时间复杂度可以理解为电脑计算矩阵消元所需要的时间与矩阵大小的关系
-
矩阵A的消元需要乘法 1 3 n 3 \frac{1}{3}n^3 31n3次,以及减法 1 3 n 3 \frac{1}{3}n^3 31n3次
-
解的消元需要 n 2 n^2 n2次乘法与 n 2 n^2 n2次减法