[矩阵的三角分解系列一] 高斯消元法

矩阵的三角分解是求解线性方程组常用的方法,包括LU分解,LDU分解,杜利特(Doolittle)分解,克劳特(Crout)分解,LLT(乔累斯基Cholesky)分解,LDLT(不带平方根乔累斯基)分解等,以及为了满足分解条件又加入行列变换的LPU分解,PLU分解,LUP分解,LDPU分解等。这里矩阵的三角分解系列教程主要是针对在学习三角分解时候的涉及到的一些细节,包括很多方法的来源和证明等,以及其中用到的一些矩阵操作的基础知识,主要包括:

这个系列后面文章会用到前面文章的理论和技术,所以建议按照顺序查看。

简介

这里讲解高斯消元法的主要是以矩阵语言来描述高斯消元这个过程,然后主要是为后面的矩阵的三角分解打下基础。矩阵的三角分解推导以及证明的过程需要依赖高斯消元的理论基础。
具体来说高斯消元法的基本思想就是利用矩阵的初等行变换把求解 A x = b \mathbf{Ax=b} Ax=b中的矩阵 A \mathbf{A} A转成上三角矩阵,需要注意这里讲解矩阵变换过程中不会利用到矩阵行交换。

矩阵行交换后面某些文章中会讲到,因为矩阵 A \mathbf{A} A的三角分解需要矩阵满足一定的条件,如果条件不满足,可以考虑交换矩阵 A \mathbf{A} A的两行,当然这个行变换后也不再是矩阵 A \mathbf{A} A了。这样对于处理解线性方程组来说,相当于调整方程的顺序,对解不产生影响,但是可以使三角分解进行下去。

高斯消元过程

n n n元线性方程组为
{ a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 , a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n = b 2 , ⋮ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n = b n , (1) \begin{cases} a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=b_1, \\ a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=b_2, \\ \vdots \\ a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=b_n, \end{cases} \tag{1} a11x1+a12x2++a1nxn=b1,a21x1+a22x2++a2nxn=b2,an1x1+an2x2++annxn=bn,(1)
转出矩阵表示为
A x = b (2) \mathbf{Ax=b} \tag{2} Ax=b(2)
其中
A = ( a i j ) n × n , x = ( x 1 , x 2 , … , x n ) T , b = ( b 1 , b 2 , ⋯   , b n ) T . \mathbf{A}=(a_{ij})_{n\times n},\mathbf{x}=(x_1,x_2,\dots,x_n)^\mathrm{T},\mathbf{b}=(b_1,b_2,\cdots,b_n)^\mathrm{T}. A=(aij)n×n,x=(x1,x2,,xn)T,b=(b1,b2,,bn)T.
A \mathbf{A} A进行高斯消元的主要过程

  1. 未进行高斯消元时
    A ( 1 ) = A = [ a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 n ( 1 ) a 21 ( 1 ) a 22 ( 1 ) ⋯ a 2 n ( 1 ) ⋮ ⋮ ⋮ a n 1 ( 1 ) a n 2 ( 1 ) ⋯ a n n ( 1 ) ] (3) \mathbf{A^{(1)}}=\mathbf{A}=\left[ \begin{matrix} a_{11}^{(1)} & a_{12}^{(1)} & \cdots & a_{1n}^{(1)} \\ a_{21}^{(1)} & a_{22}^{(1)} & \cdots & a_{2n}^{(1)} \\ \vdots & \vdots & & \vdots \\ a_{n1}^{(1)} & a_{n2}^{(1)} & \cdots & a_{nn}^{(1)} \end{matrix} \right] \tag{3} A(1)=Aa11(1)a21(1)an1(1)a12(1)a22(1)an2(1)a1n(1)a2n(1)ann(1)(3)
    其中右上角括号内的标号表示进行 i i i次高斯消元后改变的值。
  2. 如果矩阵 A ( 1 ) \mathbf{A^{(1)}} A(1)的主元素 a 11 ( 1 ) ≠ 0 a_{11}^{(1)} \neq 0 a11(1)=0,那么从第2行到第n行可以减去 a i 1 ( 1 ) / a 11 ( 1 ) a_{i1}^{(1)} / a_{11}^{(1)} ai1(1)/a11(1)其中 i = 2 , 3 , ⋯   , n i=2,3,\cdots,n i=2,3,,n,这样操作的目的是把 A ( 1 ) \mathbf{A^{(1)}} A(1)第1列上从第2个到第n个元素全部变为0。可得
    A ( 2 ) = [ a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 n ( 1 ) 0 a 22 ( 2 ) ⋯ a 2 n ( 2 ) ⋮ ⋮ ⋮ 0 a n 2 ( 2 ) ⋯ a n n ( 2 ) ] \mathbf{A^{(2)}}=\left[ \begin{matrix} a_{11}^{(1)} & a_{12}^{(1)} & \cdots & a_{1n}^{(1)} \\ 0 & a_{22}^{(2)} & \cdots & a_{2n}^{(2)} \\ \vdots & \vdots & & \vdots \\ 0 & a_{n2}^{(2)} & \cdots & a_{nn}^{(2)} \end{matrix} \right] A(2)a11(1)00a12(1)a22(2)an2(2)a1n(1)a2n(2)ann(2)
    其中右上角括号变为2的那些元素以及上面提到的变为0的那些元素是这次高斯消元操作变化的那些元素。
    如果
    l i 1 = a i 1 ( 1 ) / a 11 ( 1 ) , a i j ( 2 ) = a i j ( 1 ) − l i 1 a 1 j ( 1 ) , i , j = 2 , 3 , ⋯   , n , \begin{aligned} l_{i1} & = a_{i1}^{(1)} / a_{11}^{(1)}, \\ a_{ij}^{(2)} & = a_{ij}^{(1)} - l_{i1}a_{1j}^{(1)}, \qquad i,j=2,3,\cdots,n, \end{aligned} li1aij(2)=ai1(1)/a11(1),=aij(1)li1a1j(1),i,j=2,3,,n,
    一共需要进行 n − 1 n-1 n1次的倍加初等变换,相当于 A ( 1 ) \mathbf{A^{(1)}} A(1)左乘 n − 1 n-1 n1个倍加阵
    A ( 2 ) = I ( 1 , n ( − l n 1 ) ) ⋯ I ( 1 , n ( − l 21 ) ) A ( 1 ) . L ( 1 ) = I ( 1 , n ( − l n 1 ) ) ⋯ I ( 1 , n ( − l 21 ) ) = [ 1 − l 21 1 ⋮ ⋱ − l n 1 1 ] = [ 1 − a 21 ( 1 ) a 11 ( 1 ) 1 ⋮ ⋱ − a n 1 ( 1 ) a 11 ( 1 ) 1 ] . (4) \begin{aligned} \mathbf{A^{(2)}} & = \mathbf{I}(1, n(-l_{n1}))\cdots\mathbf{I}(1, n(-l_{21}))\mathbf{A^{(1)}}. \\ \mathbf{L^{(1)}} & = \mathbf{I}(1, n(-l_{n1}))\cdots\mathbf{I}(1, n(-l_{21})) \\ & = \left[ \begin{matrix} 1 \\ -l_{21} & 1 \\ \vdots & & \ddots & \\ -l_{n1} & & & 1 \end{matrix} \right] = \left[ \begin{matrix} 1 \\ -\frac{a_{21}^{(1)}}{a_{11}^{(1)}} & 1 \\ \vdots & & \ddots & \\ -\frac{a_{n1}^{(1)}}{a_{11}^{(1)}} & & & 1 \end{matrix} \right] \end{aligned} . \tag{4} A(2)L(1)=I(1,n(ln1))I(1,n(l21))A(1).=I(1,n(ln1))I(1,n(l21))=1l21ln111=1a11(1)a21(1)a11(1)an1(1)11.(4)
    所以
    A ( 2 ) = L ( 1 ) A ( 1 ) = [ a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 n ( 1 ) 0 a 22 ( 2 ) ⋯ a 2 n ( 2 ) ⋮ ⋮ ⋮ 0 a n 2 ( 2 ) ⋯ a n n ( 2 ) ] . (5) \mathbf{A^{(2)}} = \mathbf{L^{(1)}}\mathbf{A^{(1)}} = \left[ \begin{matrix} a_{11}^{(1)} & a_{12}^{(1)} & \cdots & a_{1n}^{(1)} \\ 0 & a_{22}^{(2)} & \cdots & a_{2n}^{(2)} \\ \vdots & \vdots & & \vdots \\ 0 & a_{n2}^{(2)} & \cdots & a_{nn}^{(2)} \end{matrix} \right]. \tag{5} A(2)=L(1)A(1)=a11(1)00a12(1)a22(2)an2(2)a1n(1)a2n(2)ann(2).(5)
    从上面过程可以看出来, A ( 1 ) = A \mathbf{A^{(1)}}=\mathbf{A} A(1)=A的第1列除主元素 a 11 ( 1 ) a_{11}^{(1)} a11(1)外,其余元素全部被化为了零,上面公式 ( 4 ) (4) (4)被称为消元矩阵
  3. 同理,如果矩阵 A ( 2 ) \mathbf{A^{(2)}} A(2)的主元素 a 22 ( 2 ) ≠ 0 a_{22}^{(2)} \neq 0 a22(2)=0,那么从第3行到第n行可以减去 a i 2 ( 2 ) / a 22 ( 2 ) a_{i2}^{(2)} / a_{22}^{(2)} ai2(2)/a22(2)其中 i = 3 , 4 , ⋯   , n i=3,4,\cdots,n i=3,4,,n,这样操作的目的是把 A ( 2 ) \mathbf{A^{(2)}} A(2)第2列上从第3个到第n个元素全部变为0。可得消元矩阵为
    L ( 2 ) = [ 1 1 − l 32 1 ⋮ ⋱ − l n 2 1 ] = [ 1 1 − a 32 ( 2 ) a 22 ( 2 ) 1 ⋮ ⋱ − a n 2 ( 2 ) a 22 ( 2 ) 1 ] . (6) \begin{aligned} \mathbf{L^{(2)}} = \left[ \begin{matrix} 1 \\ & 1 \\ & -l_{32} & 1 \\ & \vdots & & \ddots \\ & -l_{n2} & & & 1 \end{matrix} \right] = \left[ \begin{matrix} 1 \\ & 1 \\ & -\frac{a_{32}^{(2)}}{a_{22}^{(2)}} & 1 \\ & \vdots & & \ddots \\ & -\frac{a_{n2}^{(2)}}{a_{22}^{(2)}} & & & 1 \end{matrix} \right] \end{aligned} . \tag{6} L(2)=11l32ln211=11a22(2)a32(2)a22(2)an2(2)11.(6)
    其中
    l i 2 = a i 2 ( 2 ) / a 22 ( 2 ) , i = 3 , 4 , ⋯   , n , l_{i2} = a_{i2}^{(2)} / a_{22}^{(2)}, \qquad i=3,4,\cdots,n, li2=ai2(2)/a22(2),i=3,4,,n,
    所以
    A ( 3 ) = L ( 2 ) A ( 2 ) = [ a 11 ( 1 ) a 12 ( 1 ) a 13 ( 1 ) ⋯ a 1 n ( 1 ) a 22 ( 2 ) a 23 ( 2 ) ⋯ a 2 n ( 2 ) a 33 ( 3 ) ⋯ a 3 n ( 3 ) ⋮ ⋮ a n 3 ( 3 ) ⋯ a n n ( 3 ) ] . (7) \mathbf{A^{(3)}} = \mathbf{L^{(2)}}\mathbf{A^{(2)}} = \left[ \begin{matrix} a_{11}^{(1)} & a_{12}^{(1)} & a_{13}^{(1)} & \cdots & a_{1n}^{(1)} \\ & a_{22}^{(2)} & a_{23}^{(2)} & \cdots & a_{2n}^{(2)} \\ & & a_{33}^{(3)} & \cdots & a_{3n}^{(3)} \\ & & \vdots & & \vdots \\ & & a_{n3}^{(3)} & \cdots & a_{nn}^{(3)} \end{matrix} \right]. \tag{7} A(3)=L(2)A(2)=a11(1)a12(1)a22(2)a13(1)a23(2)a33(3)an3(3)a1n(1)a2n(2)a3n(3)ann(3).(7)
  4. 如果类似的过程操作 n − 1 n-1 n1次后,就可以将原来的矩阵 A \mathbf{A} A转换成上三角矩阵
    A ( n ) = L ( n − 1 ) ⋯ L ( 2 ) L ( 1 ) A ( 1 ) = [ a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 n ( 1 ) a 22 ( 2 ) ⋯ a 2 n ( 2 ) ⋱ ⋮ a n n ( n ) ] . (8) \mathbf{A^{(n)}} = \mathbf{L^{(n-1)}}\cdots\mathbf{L^{(2)}}\mathbf{L^{(1)}}\mathbf{A^{(1)}} = \left[ \begin{matrix} a_{11}^{(1)} & a_{12}^{(1)} & \cdots & a_{1n}^{(1)} \\ & a_{22}^{(2)} & \cdots & a_{2n}^{(2)} \\ & & \ddots & \vdots \\ & & & a_{nn}^{(n)} \end{matrix} \right]. \tag{8} A(n)=L(n1)L(2)L(1)A(1)=a11(1)a12(1)a22(2)a1n(1)a2n(2)ann(n).(8)
    上面就是高斯消元过程。

高斯消元条件判断

条件说明

个上面描述了整个高斯消元的主要过程,在其中 n − 1 n-1 n1的每次消元的过程中,都需要满足 A ( i ) \mathbf{A^{(i)}} A(i)的主元素,也就是 a 11 ( 1 ) , a 22 ( 2 ) , ⋯   , a n − 1 , n − 1 ( n − 1 ) a_{11}^{(1)},a_{22}^{(2)},\cdots,a_{n-1,n-1}^{(n-1)} a11(1),a22(2),,an1,n1(n1)都不能为零,否则高斯消元过程不能正常完成。
这些主元素都是高斯消元过程中的中间结果,需要提前判断是否满足高斯消元的条件才能决定是否执行高斯消元操作,而不是执行过程中才发现高斯消元过程进行不下去了。
首先定义 n n n阶矩阵 A \mathbf{A} A的前 n − 1 n-1 n1个顺序主子式(第 i i i个顺序主子式也就是原矩阵的左上角 i i i阶方阵的行列式)
Δ 1 = a 11 , Δ 2 = ∣ a 11 a 12 a 21 a 22 ∣ , ⋮ Δ n − 1 = ∣ a 11 ⋯ a 12 ⋮ ⋮ a n − 1 , 1 ⋯ a n − 1 , n − 1 ∣ . (9) \begin{aligned} \Delta_1 & = a_{11}, \\ \Delta_2 & = \begin{vmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{vmatrix}, \\ \vdots \\ \Delta_{n-1} & = \begin{vmatrix} a_{11} & \cdots & a_{12} \\ \vdots & & \vdots \\ a_{n-1,1} & \cdots & a_{n-1,n-1} \end{vmatrix}. \end{aligned} \tag{9} Δ1Δ2Δn1=a11,=a11a21a12a22,=a11an1,1a12an1,n1.(9)
基于上面的定义,可以得到一个结论能说明在矩阵满足什么条件下才能正确的完成整个高斯消元过程(在不进行行变换的基础上)。
定理一
Δ 1 , Δ 2 , ⋯   , Δ n − 1 \Delta_1,\Delta_2,\cdots,\Delta_{n-1} Δ1,Δ2,,Δn1都不为零时,则 a k k ( k ) ≠ 0 ( k − 1 , 2 , ⋯   , n − 1 ) a_{kk}^{(k)} \not = 0(k-1,2,\cdots,n-1) akk(k)=0(k1,2,,n1)
定理二
高斯消元过程能够进行到底的充分必要条件是 A \mathbf{A} A的前 n − 1 n-1 n1个顺序主子式都不为零,即 Δ k ≠ 0 ( k = 1 , 2 , ⋯   , n − 1 ) \Delta_k \not = 0(k=1,2,\cdots,n-1) Δk=0(k=1,2,,n1)

上面的定理表示如果要对一个矩阵进行高斯消元,通过计算原始矩阵的前 n − 1 n-1 n1个顺序主子式就可以判断是否该矩阵完成整个高斯消元过程。

证明

这一步证明上面的 Δ 1 , Δ 2 , ⋯   , Δ n − 1 \Delta_1,\Delta_2,\cdots,\Delta_{n-1} Δ1,Δ2,,Δn1都不为零可以推导出 a k k ( k ) ≠ 0 ( k − 1 , 2 , ⋯   , n − 1 ) a_{kk}^{(k)} \not = 0(k-1,2,\cdots,n-1) akk(k)=0(k1,2,,n1)的结论。
这里用数学归纳法来证明。

  1. Δ 1 = a 11 = a 11 ( 1 ) \Delta_1=a_{11}=a_{11}^{(1)} Δ1=a11=a11(1),显然当 Δ 1 ≠ 0 \Delta_1 \not = 0 Δ1=0 a 11 ( 1 ) ≠ 0 a_{11}^{(1)} \not = 0 a11(1)=0
  2. 然后假设阶数为 k − 1 k-1 k1时成立,由归纳法假设知 a i i ( i ) ≠ 0 ( i = 1 , 2 , ⋯   , k − 1 ) a_{ii}^{(i)} \not = 0(i=1,2,\cdots,k-1) aii(i)=0(i=1,2,,k1),根据前面的消元过程
    A ( k ) = L ( k − 1 ) ⋯ L ( 2 ) L ( 1 ) A = [ a 11 ( 1 ) a 12 ( 1 ) ⋯ ⋯ a 1 n ( 1 ) a 22 ( 2 ) ⋯ ⋯ a 2 n ( 2 ) ⋱ ⋮ ⋮ a k k ( k ) ⋯ a k n ( k ) ⋮ ⋮ a n 3 ( k ) ⋯ a n n ( k ) ] . \mathbf{A^{(k)}} = \mathbf{L^{(k-1)}}\cdots\mathbf{L^{(2)}}\mathbf{L^{(1)}}\mathbf{A} = \left[ \begin{matrix} a_{11}^{(1)} & a_{12}^{(1)} & \cdots & \cdots & a_{1n}^{(1)} \\ & a_{22}^{(2)} & \cdots & \cdots & a_{2n}^{(2)} \\ & \ddots & \vdots& & \vdots \\ & & a_{kk}^{(k)} & \cdots & a_{kn}^{(k)} \\ & & \vdots & & \vdots \\ & & a_{n3}^{(k)} & \cdots & a_{nn}^{(k)} \end{matrix} \right]. A(k)=L(k1)L(2)L(1)A=a11(1)a12(1)a22(2)akk(k)an3(k)a1n(1)a2n(2)akn(k)ann(k).
    在进行高斯消元过程中进行的倍加初等变换不改变矩阵 A \mathbf{A} A的行列式的值,所以从上面 A ( k ) \mathbf{A^{(k)}} A(k)的形状可知,矩阵 A \mathbf{A} A的前 n − 1 n-1 n1个顺序主子式满足下面关系
    Δ 1 = a 11 = a 11 ( 1 ) , Δ 2 = ∣ a 11 a 12 a 21 a 22 ∣ = ∣ a 11 ( 1 ) a 12 ( 1 ) 0 a 22 ( 2 ) ∣ = a 11 ( 1 ) a 22 ( 2 ) , ⋮ Δ k = ∣ a 11 ⋯ a 12 ⋮ ⋮ a k , 1 ⋯ a k , k ∣ = ∣ a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 k ( 1 ) a 22 ( 2 ) ⋯ a 2 k ( 2 ) ⋱ ⋮ a k k ( k ) ∣ = a 11 ( 1 ) a 22 ( 2 ) ⋯ a k k ( k ) . (10) \begin{aligned} \Delta_1 & = a_{11} = a_{11}^{(1)}, \\ \Delta_2 & = \begin{vmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{vmatrix} = \begin{vmatrix} a_{11}^{(1)} & a_{12}^{(1)} \\ 0 & a_{22}^{(2)} \end{vmatrix} = a_{11}^{(1)}a_{22}^{(2)}, \\ \vdots \\ \Delta_{k} & = \begin{vmatrix} a_{11} & \cdots & a_{12} \\ \vdots & & \vdots \\ a_{k,1} & \cdots & a_{k,k} \end{vmatrix} =\begin{vmatrix} a_{11}^{(1)} & a_{12}^{(1)} & \cdots & a_{1k}^{(1)} \\ & a_{22}^{(2)} & \cdots & a_{2k}^{(2)} \\ & & \ddots & \vdots \\ & & & a_{kk}^{(k)} \end{vmatrix} =a_{11}^{(1)}a_{22}^{(2)} \cdots a_{kk}^{(k)} . \end{aligned} \tag{10} Δ1Δ2Δk=a11=a11(1),=a11a21a12a22=a11(1)0a12(1)a22(2)=a11(1)a22(2),=a11ak,1a12ak,k=a11(1)a12(1)a22(2)a1k(1)a2k(2)akk(k)=a11(1)a22(2)akk(k).(10)
    根据假设已知 Δ i ≠ 0 \Delta_i \not = 0 Δi=0同时 a i i ( i ) ≠ 0 ( i = 1 , 2 , ⋯   , k − 1 ) a_{ii}^{(i)} \not = 0(i=1,2,\cdots,k-1) aii(i)=0(i=1,2,,k1),同时又有公式 ( 10 ) (10) (10)可知 a k k ( k ) ≠ 0 a_{kk}^{(k)} \not = 0 akk(k)=0,则对 k k k阶矩阵也成立。
    证明完成!!!

示例

三阶矩阵
A = [ 1 2 3 4 10 15 6 18 30 ] . \mathbf{A} = \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 10 & 15 \\ 6 & 18 & 30 \end{matrix} \right]. A=1462101831530.
根据上面的过程可知
{ Δ 1 = 1 Δ 2 = 2 \begin{cases} \Delta_1 = 1 \\ \Delta_2 = 2 \end{cases} {Δ1=1Δ2=2
满足上面的定理二,该矩阵的高斯消元过程能够进行到底。
根据高斯消元过程得
{ A ( 1 ) = A = [ 1 2 3 4 10 15 6 18 30 ] , A ( 2 ) = [ 1 2 3 2 3 6 12 ] , A ( 3 ) = [ 1 2 3 2 3 3 ] . \begin{aligned} \begin{cases} \mathbf{A^{(1)}} = \mathbf{A} & = \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 10 & 15 \\ 6 & 18 & 30 \end{matrix} \right], \\ \\ \mathbf{A^{(2)}} & = \left[ \begin{matrix} 1 & 2 & 3 \\ & 2 & 3 \\ & 6 & 12 \end{matrix} \right], \\ \\ \mathbf{A^{(3)}} & = \left[ \begin{matrix} 1 & 2 & 3 \\ & 2 & 3 \\ & & 3 \end{matrix} \right]. \end{cases} \end{aligned} A(1)=AA(2)A(3)=1462101831530,=12263312,=122333.

引用

【1】 矩阵论(第二版)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值