当前位置:   article > 正文

高等工程数学(一) 矩阵的三角分解 (LU分解,LDR分解,Cholesky分解)

ldr分解

本文介绍了矩阵的三角分解,如LU分解,LDR分解,Cholesky分解等。
为博主在学习过程中,总结或者思考的记录,用于加深印象,不作为知识讲解和科普,如果理解有误还请指出。

前言

  对矩阵进行分解能够清晰反应出原矩阵的某些数字特征,在矩阵运算中可以起到化简的作用,其次在一些特定的场合将矩阵分解为合适的形式能够减少运算误差,在数值计算中有很重要的地位。

一、LR(LU)分解,也称Doolittle分解

若矩阵A可以表示为:

A = L·R

其中,L为单位下三角矩阵,R为上三角矩阵,则称A可三角分解(LR分解)。例如:

A = [ 2 1 4 4 3 13 2 2 20 ] = [ 1 2 1 1 1 1 ] ⋅ [ 2 1 4 1 5 11 ] = L ⋅ R A =

[21443132220]
=
[121111]
\cdot
[2141511]
= L\cdot R A=24213241320=1211112114511=LR
LR分解可以用于解线性方程组 A x = b Ax = b Ax=b,若方阵A有LR分解,即 A = L ⋅ R A = L\cdot R A=LR,令 R x = y Rx = y Rx=y,则方程组等价于:
{ L y = b R x = y , 此 处 L . R . b 均 为 已 知 量 \left \{
Ly=bRx=y
\right. ,此处L.R.b均为已知量
{Ly=bRx=yL.R.b

由于L和R的特殊形式, L y = b Ly = b Ly=b 很容易利用高斯消元迭代求出y,然后代入 R x = y Rx = y Rx=y,再次迭代求出x。

  • 那么提出两个问题,是否所有矩阵可分解?分解的形式是否唯一?

    1. 什么矩阵可以分解

    很容易找到矩阵 [ 0 1 1 0 ]
    [0110]
    [0110]
    ,此矩阵可逆但是没有三角分解。
    定理1:
    n阶方阵A具有唯一LR分解的充要条件是A的前 n - 1个顺序主子式不为零。

    其中, A = ( a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ) A=
    (a11a12a1na21a22a2nan1an2ann)
    A=a11a21an1a12a22an2a1na2nann
    ,第k个顺序主子式 Δ k = ∣ a 11 a 12 ⋯ a 1 k a 21 a 22 ⋯ a 2 k ⋮ ⋮ ⋱ ⋮ a k 1 a k 2 ⋯ a k k ∣ \Delta_{k}=\left|
    a11a12a1ka21a22a2kak1ak2akk
    \right|
    Δk=a11a21ak1a12a22ak2a1ka2kakk

    易知 a 11 ≠ 0 a_{11}\ne0 a11=0,那么对A进行行初等变换,把除了第一行以外的所有行的第一个元素全部消除,相当于在A的左边乘以下三角矩阵 L 1 L_{1} L1,其中: L 1 = [ 1 − a 21 a 11 − 1 1 − a 31 a 11 − 1 0 ⋱ ⋮ ⋮ ⋱ ⋱ − a n 1 a 11 − 1 0 ⋯ 0 1 ] L_{1}=\left[
    1a21a1111a31a1110an1a111001
    \right]
    L1=1a21a111a31a111an1a11110001

    此时有: L 1 A ≜ [ a 11 a 12 ⋯ a 1 n 0 a 22 ( 1 ) ⋯ a 2 n ( 1 ) ⋮ ⋮ ⋱ ⋮ 0 a n 2 ( 1 ) ⋯ a m ( 1 ) ] L_{1} A \triangleq\left[
    a11a12a1n0a22(1)a2n(1)0an2(1)am(1)
    \right]
    L1Aa1100a12a22(1)an2(1)a1na2n(1)am(1)

    接着构造下一个下三角矩阵 L 2 L_{2} L2,将第二列对角线以下的元素全部消除,注意此时的条件 Δ 2 = a 11 ⋅ a 22 ( 2 ) ≠ 0 , a 11 ≠ 0 , 即 a 22 ( 2 ) ≠ 0. \Delta_{2} = a_{11}\cdot a_{22}^{(2)}\ne0,a_{11}\ne0,即a_{22}^{(2)}\ne0. Δ2=a11a22(2)=0,a11=0,a22(2)=0.

L 2 = [ 1 0 1 0 − a 32 ( 1 ) / a 22 ( 1 ) 1 0 − a 42 ( 1 ) / a 22 ( 1 ) 0 ⋱ ⋮ ⋮ ⋮ ⋱ ⋱ 0 − a n 2 ( 1 ) / a 22 ( 1 ) 0 ⋯ 0 1 ] 继 续 左 乘 在 L 1 A 处 , 有 L 2 L 1 A = [ a 11 a 12 a 13 ⋯ a 1 n a 22 ( 1 ) a 22 ( 1 ) ⋯ a 2 n ( 1 ) ⋮ a 33 ( 2 ) ⋯ a 3 n ( 2 ) 0 ⋮ ⋱ ⋮ 0 a n 3 ( 2 ) ⋯ a m ( 2 ) ]

L2=[1010a32(1)/a22(1)10a42(1)/a22(1)00an2(1)/a22(1)001]L1AL2L1A=[a11a12a13a1na22(1)a22(1)a2n(1)a33(2)a3n(2)00an3(2)am(2)]
L2=L2L1A=100001a32(1)/a22(1)a42(1)/a22(1)an2(1)/a22(1)10001L1Aa11a12a22(1)00a13a22(1)a33(2)an3(2)a1na2n(1)a3n(2)am(2)以此类推,最终可以化简得到:
L n − 1 ⋯ L 2 L 1 A = [ a 11 a 12 a 13 ⋯ a 1 n a 22 ( 1 ) a 22 ( 1 ) ⋯ a 2 n ( 1 ) a 33 ( 2 ) ⋯ a 3 n ( 2 ) ⋱ ⋮ a m ( n − 1 ) ] ≜ R L_{n-1} \cdots L_{2} L_{1} A=\left[
a11a12a13a1na22(1)a22(1)a2n(1)a33(2)a3n(2)am(n1)
\right] \triangleq R
Ln1L2L1A=a11a12a22(1)a13a22(1)a33(2)a1na2n(1)a3n(2)am(n1)R

L n − 1 ⋯ L 2 L 1 = L − 1 , 则 有 L − 1 A = R , L 也 是 下 三 角 矩 阵 , 且 为 单 位 下 三 角 矩 阵 L_{n-1}\cdots L_{2} L_{1}=L^{-1},则有L^{-1}A =R,L也是下三角矩阵,且为单位下三角矩阵 Ln1L2L1=L1L1A=RL。(下三角矩阵的逆仍然为下三角矩阵)

  • 那什么情况下不能分解呢?
    我们看看上面的过程,是不是每一次乘以 L i L_{i} Li 矩阵时,都需要第 i i i 个主对角元素不为0,这样才能作为分母,把该列下面的元素全部通过初等行变换消掉,如果矩阵 L i ⋯ L 1 A L_{i}\cdots L_{1}A LiL1A 的第 i i i 个主对角元素为0,那么久不能再乘以 L L L 了,举个例子:
    A = [ 2 1 4 4 2 13 2 2 20 ] = r 2 − 2 r 1 , r 3 − r 1 [ 2 1 4 0 0 5 0 1 16 ] , 此 时 就 无 法 继 续 化 成 上 三 角 了 。 A = \left[
    21442132220
    \right] \xlongequal{r_{2} - 2r_{1},r_{3}-r_{1}} \left[
    2140050116
    \right],此时就无法继续化成上三角了。
    A=24212241320r22r1,r3r1 2001014516

    2. 什么情况分解唯一

    上面也讲了,当顺序主子式不等于0时,具有唯一分解。那么什么情况下不唯一呢?当然是顺序主子式等于0的情况,但是同时要注意上面举例说过如果碰到主子式等于0很可能出现无法继续化简的情况,但是如果恰好碰到该列下面所有元素都为0时,那就不用乘这个 L L L了。我们举例说明:
    A = [ 2 1 4 4 2 13 0 0 6 ] = r 2 − 2 r 1 [ 2 1 4 0 0 5 0 0 6 ] , 恰 好 第 三 行 需 要 消 除 的 元 素 本 身 就 为 0. A = \left[
    2144213006
    \right] \xlongequal{r_{2} - 2r_{1}} \left[
    214005006
    \right],恰好第三行需要消除的元素本身就为0.
    A=2401204136r22r1 200100456,0.

    但是此时有一个问题就是,我可以当作看成第三行没有变,我也可以是将任意倍数的第二行加到第三行,那么此时的 L 2 L_{2} L2既可以是单位阵,也可以是其他下三角矩阵,即 L 2 L_{2} L2不唯一,那么所有 L L L的乘积自然不唯一。
    A = [ 2 1 4 4 2 13 0 0 6 ] = [ 1 2 1 0 0 1 ] ⋅ [ 2 1 4 0 0 5 0 0 6 ] = [ 1 2 1 0 1 1 ] ⋅ [ 2 1 4 0 0 5 0 0 1 ] A = \left[
    2144213006
    \right] = \left[
    121001
    \right]\cdot \left[
    214005006
    \right] = \left[
    121011
    \right]\cdot \left[
    214005001
    \right]
    A=2401204136=120101200100456=120111200100451

二、带行变换的LU分解

之前说过,如果遇到某次变换后的主对角元素为0那么就不能继续进行变换,但是我们要是将下面的行移上来呢,那主对角元素不就非0了吗?
我们用增广矩阵的形式来描述上述过程:

[ A I n I n ] → [ P A P I n ] → [ P A Q P Q ] = [ L P Q ] \left [

AInIn
\right ] \rightarrow \left [
PAPIn
\right ]\rightarrow \left [
PAQPQ
\right ] = \left [
LPQ
\right ] [AInIn][PAInP][PAQQP]=[LQP]
整个过程的目的就是将A变成下三角矩阵,由于每次只会将右边的列换到左边,所以 Q Q Q一定是上三角阵,P为置换阵(多个初等行变换相乘)。
P A = L Q − 1 = L R PA = LQ^{-1} = LR PA=LQ1=LR

三、LDR分解

若满秩方阵A有LR分解:
A = L ⋅ R ~ A = L\cdot \widetilde{R} A=LR
R ~ \widetilde{R} R 也是满秩矩阵,且对焦元素不为0,有:
R ~ = [ d 1 d 2 ⋱ d n ] [ 1 r 12 ⋯ r 1 n 1 ⋱ ⋮ ⋱ r ( n − 1 ) n 1 ] \widetilde{R}=\left[

d1d2dn
\right]\left[
1r12r1n1r(n1)n1
\right] R =d1d2dn1r121r1nr(n1)n1
从而 A = L D R A = LDR A=LDR,其中L为单位下三角阵,D为对角阵,R为单位上三角阵。
与LR分解对比,我们只需要知道如何分解得到:
R ~ = D R \widetilde{R} = DR R =DR,举例说明:
R ~ = [ 2 1 4 1 5 11 ] = [ 2 1 11 ] ⋅ [ 1 1 / 2 2 1 5 1 ] \widetilde R = \left[
2141511
\right] = \left[
2111
\right] \cdot \left[
11/22151
\right]
R =2114511=211111/21251

实际上就是除以该行的主对角元素,因为对角矩阵只是会缩放当前行(左乘时),将D分解出去相当于提出了一个系数。

四、Cholesky分解

若矩阵A是对称正定矩阵,其顺序主子式 Δ k > 0 \Delta_{k}>0 Δk>0,所以A具有唯一的LDR分解,即 A = L D R A = LDR A=LDR,其中D为对角阵:
D = ( d 1 ⋱ d n ) D =

(d1dn)
D=d1dn
由于A是对称矩阵,则有 A = A T = L D R = ( L D R ) T = R T D L T A = A^{T}=LDR=(LDR)^{T}=R^{T}DL^{T} A=AT=LDR=(LDR)T=RTDLT,同时LDR分解是唯一的,说明: L = R T L=R^{T} L=RT,A也可以表示为:
A = L D R = L D 1 2 D 1 2 L T = L D 1 2 ( L D 1 2 ) T = G G T A=LDR=LD^{\frac{1}{2}}D^{\frac{1}{2}}L^{T}=LD^{\frac{1}{2}}(LD^{\frac{1}{2}})^{T}=GG^{T } A=LDR=LD21D21LT=LD21(LD21)T=GGT
这里需要说明,因为A是正定的,D作为对角阵所有元素都是大于零的 (理由我也讲不清楚,但是D的子行列式( d 1 ⋅ d 2 ⋯ d k d_{1}\cdot d_{2}\cdots d_{k} d1d2dk)是等于A对应的顺序主子式 Δ k \Delta_{k} Δk的),所以 D 1 2 D^{\frac{1}{2}} D21 相当于所有元素 d i d_{i} di开方求得。
举例: [ A I n I n ] → [ P A P T P P T ] → [ D G G T ] \left [
AInIn
\right ] \rightarrow \left [
PAPTPPT
\right ]\rightarrow \left [
DGGT
\right ]
[AInIn][PAPTPTP][DGTG]

解释一下,这里对A同时进行行和列的变换,因为A是对称矩阵,那么行怎么化简消除,列也应该怎么化简消除,所以两边是转置的关系,又因为总是消除下面的行,消除右边的列,所以P是下三角矩阵,最后的G也是下三角矩阵。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/176661
推荐阅读
相关标签
  

闽ICP备14008679号