计算方法(三):线性方程组的解法

线性方程组的解法

高斯消元法与选主元技巧

基本思想:通过初等行变换,将一个方程乘以某个常数,一个方程加上另一个方程的常数倍等,减少方程中的未知数数目,最后化成三角形方程组,从而得到所需要的解。

三角形方程组及其解法

上三角形方程组:
{ a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1                a 22 x 2 + ⋯ + a 2 n x n = b 2                              ⋯    ⋯                                        a n n x n = b n \begin{cases}a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=b_1\\\ \ \ \ \ \ \ \ \ \ \ \ \ \ a_{22}x_2+\cdots+a_{2n}x_n=b_2\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \cdots \ \ \cdots\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ a_{nn}x_n=b_n\end{cases} a11x1+a12x2++a1nxn=b1              a22x2++a2nxn=b2                                                                    annxn=bn

回代的方法求解:先从第n个方程求出 x n x_n xn,代入第n-1个方程求出 x n − 1 x_{n-1} xn1,依次类推,可求出所有的 x i x_i xi
{ x n = b n a n n x i = b i − ∑ j = i + 1 n a i j x j a i i 要 求 a i i ( i ) ≠ 0 \begin{cases}x_n=\frac{b_n}{a_{nn}}\\x_i=\frac{b_i-\sum_{j=i+1}^na_{ij}x_j}{a_{ii}}\end{cases}\\要求a^{(i)}_{ii}\neq0 {xn=annbnxi=aiibij=i+1naijxjaii(i)=0
类似的,下三角形方程组:
{ a 11 x 1                                         = b 1 a 21 x 1 + a 22 x 2                           = b 2                ⋯    ⋯ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n = b n \begin{cases}a_{11}x_1 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =b_1\\a_{21}x_1+a_{22}x_2 \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =b_2\\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \cdots \ \ \cdots \\a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=b_n\end{cases} a11x1                                       =b1a21x1+a22x2                         =b2                an1x1+an2x2++annxn=bn
前代的方法求解:先从第1个方程求出 x 1 x_1 x1,代入第2个方程求出 x 2 x_2 x2,依次类推,可求出所有的 x i x_i xi
{ x 1 = b 1 a 11 x i = b i − ∑ j = 1 i − 1 a i j x j a i i \begin{cases}x_1=\frac{b_1}{a_{11}}\\x_i=\frac{b_i-\sum_{j=1}^{i-1}a_{ij}x_j}{a_{ii}}\end{cases} {x1=a11b1xi=aiibij=1i1aijxj
回代法和前代法的计算量都是 1 2 n ( n + 1 ) \frac{1}{2}n(n+1) 21n(n+1) 次乘除运算。

高斯消元法

高斯消元法分为两大步:消元和回代

(1)将系数矩阵A经过一系列的初等行变换变成右上三角矩阵,其常向量b也同时作相应变换,即
[ a 11 a 12 ⋯ a 1 n b 1 a 21 a 22 ⋯ a 2 n b 2 ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n n b n ] = [ a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 n ( 1 ) b 1 ( 1 ) a 21 ( 1 ) a 22 ( 1 ) ⋯ a 2 n ( 1 ) b 2 ( 1 ) ⋮ ⋮ ⋮ a n 1 ( 1 ) a n 2 ( 1 ) ⋯ a n n ( 1 ) b n ( 1 ) ] → [ a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 n ( 1 ) b 1 ( 1 ) 0 a 22 ( 2 ) ⋯ a 2 n ( 2 ) b 2 ( 2 ) ⋮ ⋮ ⋮ 0 a n 2 ( 2 ) ⋯ a n n ( 2 ) b n ( 2 ) ] = [ A ( 2 ) b ( 2 ) ] \left[\begin{matrix}a_{11}& a_{12} & \cdots&a_{1n}&b_1\\a_{21}& a_{22} & \cdots&a_{2n}&b_2\\\vdots&\vdots&&\vdots\\a_{n1}& a_{n2} & \cdots&a_{nn}&b_n\end{matrix}\right]=\left[\begin{matrix}a_{11}^{(1)}& a_{12} ^{(1)}& \cdots&a_{1n}^{(1)}&b_1^{(1)}\\a_{21}^{(1)}& a_{22}^{(1)} & \cdots&a_{2n}^{(1)}&b_2^{(1)}\\\vdots&\vdots&&\vdots\\a_{n1}^{(1)}& a_{n2}^{(1)} & \cdots&a_{nn}^{(1)}&b_n^{(1)}\end{matrix}\right]\rightarrow\left[\begin{matrix}a_{11}^{(1)}& a_{12} ^{(1)}& \cdots&a_{1n}^{(1)}&b_1^{(1)}\\0& a_{22}^{(2)} & \cdots&a_{2n}^{(2)}&b_2^{(2)}\\\vdots&\vdots&&\vdots\\0& a_{n2}^{(2)} & \cdots&a_{nn}^{(2)}&b_n^{(2)}\end{matrix}\right]=\left[\begin{matrix}A^{(2)}&b^{(2)}\end{matrix}\right] a11a21an1a12a22an2a1na2nannb1b2bn=a11(1)a21(1)an1(1)a12(1)a22(1)an2(1)a1n(1)a2n(1)ann(1)b1(1)b2(1)bn(1)a11(1)00a12(1)a22(2)an2(2)a1n(1)a2n(2)ann(2)b1(1)b2(2)bn(2)=[A(2)b(2)]
其中第i行加上第1行的 − m i 1 -m_{i1} mi1
m i 1 = a i 1 ( 1 ) a 11 ( 1 ) a i j ( 2 ) = a i j ( 1 ) − m i 1 a 1 j ( 1 ) b i ( 2 ) = b i ( 1 ) − m i 1 b 1 ( 1 ) m_{i1}=\frac{a_{i1}^{(1)}}{a_{11}^{(1)}}\\a_{ij}^{(2)}=a_{ij}^{(1)}-m_{i1}a_{1j}^{(1)}\\b_{i}^{(2)}=b_{i}^{(1)}-m_{i1}b_1^{(1)} mi1=a11(1)ai1(1)aij(2)=aij(1)mi1a1j(1)bi(2)=bi(1)mi1b1(1)
A ( 2 ) x = b ( 2 ) A^{(2)}x=b^{(2)} A(2)x=b(2) 再进行消元可得
[ A ( 3 ) b ( 3 ) ] = [ a 11 ( 1 ) a 12 ( 1 ) a 13 ( 1 ) ⋯ a 1 n ( 1 ) b 1 ( 1 ) 0 a 22 ( 2 ) a 23 ( 2 ) ⋯ a 2 n ( 2 ) b 2 ( 2 ) 0 0 a 33 ( 3 ) ⋯ a 3 n ( 3 ) b 3 ( 3 ) ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 a n 3 ( 3 ) ⋯ a n n ( 3 ) b n ( 3 ) ] \left[\begin{matrix}A^{(3)}&b^{(3)}\end{matrix}\right]=\left[\begin{matrix}a_{11}^{(1)}& a_{12} ^{(1)}& a_{13} ^{(1)}&\cdots&a_{1n}^{(1)}&b_1^{(1)}\\0& a_{22}^{(2)} &a_{23} ^{(2)}& \cdots&a_{2n}^{(2)}&b_2^{(2)}\\0&0&a_{33}^{(3)}&\cdots&a_{3n}^{(3)}&b_3^{(3)}\\\vdots&\vdots&\vdots&&\vdots&\vdots\\0&0&a_{n3}^{(3)}&\cdots&a_{nn}^{(3)}&b_n^{(3)}\end{matrix}\right] [A(3)b(3)]=a11(1)000a12(1)a22(2)00a13(1)a23(2)a33(3)an3(3)a1n(1)a2n(2)a3n(3)ann(3)b1(1)b2(2)b3(3)bn(3)
其中第i行加上第2行的 − m i 2 -m_{i2} mi2
m i 2 = a i 2 ( 2 ) a 22 ( 2 ) a i j ( 3 ) = a i j ( 2 ) − m i 2 a 2 j ( 2 ) b i ( 3 ) = b i ( 2 ) − m i 2 b 2 ( 2 ) m_{i2}=\frac{a_{i2}^{(2)}}{a_{22}^{(2)}}\\a_{ij}^{(3)}=a_{ij}^{(2)}-m_{i2}a_{2j}^{(2)}\\b_{i}^{(3)}=b_{i}^{(2)}-m_{i2}b_2^{(2)} mi2=a22(2)ai2(2)aij(3)=aij(2)mi2a2j(2)bi(3)=bi(2)mi2b2(2)
重复上述过程,第k次消元时:
m i k = a i k ( k ) a k k ( k ) a i j ( k + 1 ) = a i j ( k ) − m i k a k j ( k ) b i ( k + 1 ) = b i ( k ) − m i k b k ( k ) m_{ik}=\frac{a_{ik}^{(k)}}{a_{kk}^{(k)}}\\a_{ij}^{(k+1)}=a_{ij}^{(k)}-m_{ik}a_{kj}^{(k)}\\b_{i}^{(k+1)}=b_{i}^{(k)}-m_{ik}b_k^{(k)} mik=akk(k)aik(k)aij(k+1)=aij(k)mikakj(k)bi(k+1)=bi(k)mikbk(k)
得到与 A x = b Ax=b Ax=b 同解的方程组: A ( k + 1 ) x = b ( k + 1 ) , k = 1 , 2 , ⋯   , n − 1 A^{(k+1)}x=b^{(k+1)},k=1,2,\cdots,n-1 A(k+1)x=b(k+1),k=1,2,,n1

保证高斯消元法顺利进行的条件:各次主元素 a i i ( i ) ≠ 0 a_{ii}^{(i)}\neq0 aii(i)=0,主元 a i i ( i ) ≠ 0 a_{ii}^{(i)}\neq0 aii(i)=0 的充要条件是主子矩阵 A i ≠ 0 A_i\neq0 Ai=0 非奇异。

定理1:设 A = [ a i j ( k ) ] ∈ R n × n , b = ( b 1 ( 1 ) , b 2 ( 1 ) , ⋯   , b n ( 1 ) ) ∈ R A=[a_{ij}^{(k)}]\in R^{n\times n},b=(b_1^{(1)},b_2^{(1)},\cdots,b_n^{(1)})\in R A=[aij(k)]Rn×n,b=(b1(1),b2(1),,bn(1))R。若约化主元 a k k ( k ) ≠ 0 a_{kk}^{(k)}\neq0 akk(k)=0,则可通过高斯消元法将方程组 A x = b Ax=b Ax=b 约化求解,计算公式如下:

(1)消元计算
m i k = a i k ( k ) a k k ( k ) a i j ( k + 1 ) = a i j ( k ) − m i k a k j ( k ) b i ( k + 1 ) = b i ( k ) − m i k b k ( k ) m_{ik}=\frac{a_{ik}^{(k)}}{a_{kk}^{(k)}}\\a_{ij}^{(k+1)}=a_{ij}^{(k)}-m_{ik}a_{kj}^{(k)}\\b_{i}^{(k+1)}=b_{i}^{(k)}-m_{ik}b_k^{(k)} mik=akk(k)aik(k)aij(k+1)=aij(k)mikakj(k)bi(k+1)=bi(k)mikbk(k)
(2)回代求解
{ x n = b n ( n ) / a n n ( n ) x i = ( b i ( i ) − ∑ j = i + 1 n a i j ( i ) x j ) / a i i ( i ) \begin{cases}x_n={b_n^{(n)}}/{a_{nn}^{(n)}}\\x_i=({b_i^{(i)}-\sum_{j=i+1}^na_{ij}^{(i)}x_j})/{a_{ii}^{(i)}}\end{cases} {xn=bn(n)/ann(n)xi=(bi(i)j=i+1naij(i)xj)/aii(i)

高斯消元法算法分析:

(1)算法的时间复杂度:共需乘除法运算的总数为
S = 1 3 n 3 + n 2 − 1 3 n = O ( n 3 ) S=\frac{1}{3}n^3+n^2-\frac{1}{3}n=O(n^3) S=31n3+n231n=O(n3)
(2)算法的空间复杂度:符合原地工作的原则。

(3)数值计算的稳定性:当 ∣ a k k ( k ) ∣ = 0 |a_{kk}^{(k)}|=0 akk(k)=0 ,运算会中断,即使不等于0,但当 ∣ a k k ( k ) ∣ |a_{kk}^{(k)}| akk(k) 很小时,一方面会损失精度,另一方面还可能导致商太大使计算产生溢出。所以,高斯消元法对数值计算是不稳定的。

列主元消元法

列主元的思想是: 当变换到第k步时,从第k列 a k k ( k ) a_{kk}^{(k)} akk(k) 及以下的各元素中选取绝对值最大者,然后通过行变换将它交换到主元素 a k k ( k ) a_{kk}^{(k)} akk(k) 的位置(k,k)上。即选取 a i k k ( k ) a_{i_kk}^{(k)} aikk(k),满足: ∣ a i k k ( k ) ∣ = m a x k ≤ i ≤ n ∣ a i k ( k ) ∣ |a_{i_kk}^{(k)}|=max_{k\leq i\leq n}|a_{ik}^{(k)}| aikk(k)=maxkinaik(k),进行 k k k 行与 i k i_k ik 行互换。

采用列主元的高斯消元法是不影响求解结果的。

但列主元不能保证当前的主元素是同一行(即第k行)中的绝对值最大者,其计算过程还是不稳定的,不适于求解大规模的线性方程组。

全选主元(简称全主元) :基本思想是当变换到第k步时,从系数矩阵右下角(n-k-1)阶矩阵中选取绝对值最大的元素,通过行、列变换将它交换到主元素 a k k ( k ) a_{kk}^{(k)} akk(k) 的位置(k,k)上。

虽然行交换不影响最后求解的结果,但列交换将会导致最后结果(即解向量)中对应未知数的次序混乱。 必须在选主元过程中记住所进行的一切列交换,以便对最后结果进行恢复。

三角分解法

基本思想:将 A A A 分解成两个三角形矩阵 L 、 U L、U LU 的乘积 A = L U A=LU A=LU ,线性方程组 A x = b Ax=b Ax=b 归结为
{ L y = b U x = y \begin{cases}Ly=b\\Ux=y\end{cases} {Ly=bUx=y
这两个方程可以通过前代法和回代法求解。

矩阵的三角分解

常用的矩阵三角分解形式: A = L U A=LU A=LU,称为矩阵 A A A L U LU LU 分解。若 L L L 是单位下三角阵, U U U 是上三角阵,称为杜利特尔分解;若 L L L 是下三角阵, U U U 是单位上三角阵,则称为克劳特分解

从高斯消元法过程可知,高斯消元法就是对系数矩阵 A A A 左乘n-1个初等单位下三角矩阵: A ( k + 1 ) = L k A ( k ) , k = 1 , 2 , ⋯   , n − 1 A^{(k+1)}=L_kA^{(k)},k=1,2,\cdots,n-1 A(k+1)=LkA(k),k=1,2,,n1 m i k = a i k ( k ) a k k ( k ) , a k k ( k ) ≠ 0 , i = k + 1 , k + 2 , ⋯   , n m_{ik}=\frac{a_{ik}^{(k)}}{a_{kk}^{(k)}},a_{kk}^{(k)}\neq 0,i=k+1,k+2,\cdots,n mik=akk(k)aik(k),akk(k)=0,i=k+1,k+2,,n
L k = [ 1 ⋱ 1 − m k + 1 , k 1 ⋮ ⋱ − m n k 1 ]       k = 1 , 2 , ⋯   , n − 1 L_k=\left[\begin{matrix}1&&&&&\\&\ddots\\&&1\\&&-m_{k+1,k}&1\\&&\vdots&&\ddots\\&&-m_{nk}&&&1\\\end{matrix}\right]\ \ \ \ \ k=1,2,\cdots,n-1 Lk=11mk+1,kmnk11     k=1,2,,n1
得:
A ( n ) = L n − 1 L n − 2 ⋯ L 1 A b ( n ) = L n − 1 L n − 2 ⋯ L 1 b A = ( L 1 − 1 L 2 − 1 ⋯ L n − 1 − 1 ) A ( n ) = L U A^{(n)}=L_{n-1}L_{n-2}\cdots L_1A\\b^{(n)}=L_{n-1}L_{n-2}\cdots L_1b\\A=(L_1^{-1}L_2^{-1}\cdots L_{n-1}^{-1})A^{(n)}=LU A(n)=Ln1Ln2L1Ab(n)=Ln1Ln2L1bA=(L11L21Ln11)A(n)=LU

其中
{ L = L 1 − 1 L 2 − 1 ⋯ L n − 1 − 1 U = A ( n ) L k − 1 = [ 1 ⋱ 1 m k + 1 , k 1 ⋮ ⋱ m n k 1 ] L = [ 1 m 21 1 m 31 m 32 ⋱ ⋮ ⋮ ⋱ 1 m n 1 m n 2 m n , n − 1 1 ] U = A ( n ) = [ a 11 ( 1 ) a 12 ( 1 ) ⋯ a 1 n ( 1 ) 0 a 22 ( 2 ) ⋯ a 2 n ( 2 ) ⋮ ⋮ ⋮ 0 0 ⋯ a n n ( n ) ] \begin{cases}L=L_1^{-1}L_2^{-1}\cdots L_{n-1}^{-1}\\U=A^{(n)}\end{cases}\\L_k^{-1}=\left[\begin{matrix}1&&&&&\\&\ddots\\&&1\\&&m_{k+1,k}&1\\&&\vdots&&\ddots\\&&m_{nk}&&&1\\\end{matrix}\right]\\L=\left[\begin{matrix}1&&&&&\\m_{21}&1&&&\\m_{31}&m_{32}&\ddots&&\\\vdots&\vdots&\ddots&1&&\\m_{n1}&m_{n2}&&m_{n,n-1}&1\end{matrix}\right]\\U=A^{(n)}=\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&0&\cdots&a_{nn}^{(n)}\end{matrix}\right] {L=L11L21Ln11U=A(n)Lk1=11mk+1,kmnk11L=1m21m31mn11m32mn21mn,n11U=A(n)=a11(1)00a12(1)a22(2)0a1n(1)a2n(2)ann(n)
上述的LU分解,被称为杜利特尔(Doolittle)分解

定理2(矩阵三角分解基本定理):设 A ∈ R n × n A\in R^{n\times n} ARn×n,若 A A A 的顺序主子式 d e t ( A k ) ≠ 0 det(A_k)\neq0 det(Ak)=0,则存在唯一的杜利特尔分解: A = L U A=LU A=LU,其中 L L L 为单位下三角形矩阵, U U U 为非奇异的上三角形矩阵。

证明:由定理1和:
d e t ( A k ) = ∣ a 11 a 12 ⋯ a 1 k a 21 a 22 ⋯ a 2 k ⋮ ⋮ ⋮ a k 1 a k 2 ⋯ a k k ∣ = a 11 ( 1 ) a 22 ( 2 ) ⋯ a k k ( k ) , a k k ( k ) ≠ 0 det(A_k)=\left|\begin{matrix}a_{11}& a_{12} & \cdots&a_{1k}\\a_{21}& a_{22} & \cdots&a_{2k}\\\vdots&\vdots&&\vdots\\a_{k1}& a_{k2} & \cdots&a_{kk}\end{matrix}\right|=a_{11}^{(1)}a_{22}^{(2)}\cdots a_{kk}^{(k)},a_{kk}^{(k)}\neq 0 det(Ak)=a11a21ak1a12a22ak2a1ka2kakk=a11(1)a22(2)akk(k)akk(k)=0
可知杜利特尔分解的存在性。

唯一性: A A A 存在两个杜利特尔分解: A = L 1 U 1 , A = L 2 U 2 A=L_1U_1,A=L_2U_2 A=L1U1,A=L2U2,则 L 1 U 1 = L 2 U 2 , L 2 − 1 L 1 = U 2 U 1 − 1 L_1U_1=L_2U_2,L_2^{-1}L_1=U_2U_1^{-1} L1U1=L2U2,L21L1=U2U11,由于 L 2 − 1 L 1 L_2^{-1}L_1 L21L1 是单位上三角形矩阵,可知
L 2 − 1 L 1 = U 2 U 1 − 1 = I L_2^{-1}L_1=U_2U_1^{-1}=I L21L1=U2U11=I
所以, L 1 = L 2 , U 1 = U 2 L_1=L_2,U_1=U_2 L1=L2,U1=U2,得唯一性。

(矩阵形式)杜利特尔分解法

设实矩阵 A A A 的各阶主子式 d e t ( A j ) ≠ 0 det(A_j)\neq0 det(Aj)=0,则由定理2知,存在唯一的杜利特尔分解: A = L U A=LU A=LU

其中
L = [ 1 l 21 1 l 31 l 32 1 ⋮ ⋮ ⋱ ⋱ l n 1 l n 2 ⋯ l n , n − 1 1 ]    , U = [ u 11 u 12 u 13 ⋯ u 1 n u 22 u 23 ⋯ u 2 n u 33 ⋯ u 3 n ⋱ ⋮ u n n ] L=\left[\begin{matrix}1&&&&\\l_{21}&1&&&\\l_{31}&l_{32}&1&&\\\vdots&\vdots&\ddots&\ddots&\\l_{n1}&l_{n2}&\cdots&l_{n,n-1}&1\end{matrix}\right]\ \ ,U=\left[\begin{matrix}u_{11}&u_{12}&u_{13}&\cdots&u_{1n}\\&u_{22}&u_{23}&\cdots&u_{2n}\\&&u_{33}&\cdots&u_{3n}\\&&&\ddots&\vdots\\&&&&u_{nn}\end{matrix}\right] L=1l21l31ln11l32ln21ln,n11  ,U=u11u12u22u13u23u33u1nu2nu3nunn
由矩阵相等的条件可得:

(1)由 a 1 i = u 1 i a_{1i}=u_{1i} a1i=u1i,得: u 1 i = a 1 i   ( i = 1 , 2 , ⋯   , n ) u_{1i}=a_{1i}\ (i=1,2,\cdots,n) u1i=a1i (i=1,2,,n)。由 a i 1 = l i 1 u 11 a_{i1}=l_{i1}u_{11} ai1=li1u11,得: l i 1 = a i 1 / u 11   ( i = 2 , 3 , ⋯   , n ) l_{i1}=a_{i1}/u_{11}\ (i=2,3,\cdots,n) li1=ai1/u11 (i=2,3,,n)

(2)由 a 2 i = l 21 u 1 i + u 2 i a_{2i}=l_{21}u_{1i}+u_{2i} a2i=l21u1i+u2i,得: u 2 i = a 2 i − l 21 u 1 i ( 1 = 2 , 3 , ⋯   , n ) u_{2i}=a_{2i}-l_{21}u_{1i}(1=2,3,\cdots,n) u2i=a2il21u1i(1=2,3,,n)。由 a i 2 = l i 1 u 12 + l i 2 u 22 a_{i2}=l_{i1}u_{12}+l_{i2}u_{22} ai2=li1u12+li2u22,得: l i 2 = ( a i 2 − l i 1 u 12 ) / u 22 ( i = 3 , 4 , ⋯   , n ) l_{i2}=(a_{i2}-l_{i1}u_{12})/u_{22}(i=3,4,\cdots,n) li2=(ai2li1u12)/u22(i=3,4,,n)

(3)在求出 U U U 的前k-1行与 L L L 的前k-1列后, U U U 的k行、 L L L 的k列元为:
u k i = a k i − ∑ j = 1 k − 1 l k j u j i ( i = k , k + 1 , ⋯   , n ) l i k = ( a i k − ∑ j = 1 k − 1 l i j u j k ) / u k k ( i = k + 1 , k + 2 , ⋯   , n ) u_{ki}=a_{ki}-\sum_{j=1}^{k-1}l_{kj}u_{ji}(i=k,k+1,\cdots,n)\\l_{ik}=(a_{ik}-\sum_{j=1}^{k-1}l_{ij}u_{jk})/u_{kk}(i=k+1,k+2,\cdots,n) uki=akij=1k1lkjuji(i=k,k+1,,n)lik=(aikj=1k1lijujk)/ukk(i=k+1,k+2,,n)
杜利特尔分解的紧凑格式:定义Q:
Q = L + U − I = [ u 11 u 12 ⋯ u 1 k ⋯ u 1 n l 21 u 22 ⋯ u 2 k ⋯ u 2 n ⋮ ⋮ ⋮ ⋮ l k 1 l k 2 ⋯ u k k ⋯ u k n ⋮ ⋮ ⋮ ⋮ l n 1 l n 2 ⋯ l n k ⋯ n n n ] Q=L+U-I=\left[\begin{matrix}u_{11}&u_{12}&\cdots&u_{1k}&\cdots&u_{1n}\\l_{21}&u_{22}&\cdots&u_{2k}&\cdots&u_{2n}\\\vdots&\vdots&&\vdots&&\vdots\\l_{k1}&l_{k2}&\cdots&u_{kk}&\cdots&u_{kn}\\\vdots&\vdots&&\vdots&&\vdots\\l_{n1}&l_{n2}&\cdots&l_{nk}&\cdots&n_{nn}\end{matrix}\right] Q=L+UI=u11l21lk1ln1u12u22lk2ln2u1ku2kukklnku1nu2nuknnnn
只要求出Q矩阵,便可得到矩阵 A A A 的三角分解 L U LU LU

步骤(重要): a i k / a k k → a i k , i = k + 1 , k + 2 , ⋯   , n , a i j − a i k a k j → a i j , i = k + 1 , ⋯   , n , j = k + 1 , ⋯   , n a_{ik}/a_{kk}\rightarrow a_{ik},i=k+1,k+2,\cdots,n,a_{ij}-a_{ik}a_{kj}\rightarrow a_{ij},i=k+1,\cdots,n,j=k+1,\cdots,n aik/akkaik,i=k+1,k+2,,n,aijaikakjaij,i=k+1,,n,j=k+1,,n

之后用: L Y = b , U X = Y LY=b,UX=Y LY=b,UX=Y,解方程组。

解三对角线方程组的追赶法

A = [ a 11 a 12 a 21 a 22 a 23 0 a 32 a 33 a 34 ⋱ ⋱ ⋱ 0 a n − 1 , n − 2 a n − 1 , n − 1 a n − 1 , n a n , n − 1 a n n ] A=\left[\begin{matrix}a_{11}&a_{12}&&&&\\a_{21}&a_{22}&a_{23}&&0&&\\&a_{32}&a_{33}&a_{34}&&\\&&\ddots&\ddots&\ddots&&\\&&0&a_{n-1,n-2}&a_{n-1,n-1}&a_{n-1,n}\\&&&&a_{n,n-1}&a_{nn}\end{matrix}\right] A=a11a21a12a22a32a23a330a34an1,n20an1,n1an,n1an1,nann

称线性方程组 A x = b Ax=b Ax=b三对角线方程组。

A A A 满足:
{ ∣ a 11 ∣ > ∣ a 12 ∣ > 0 ∣ a i i ∣ ≥ ∣ a i , i − 1 ∣ + ∣ a i , i + 1 ∣ > 0 , i = 2 , 3 , ⋯   , n − 1 ∣ a n n ∣ > ∣ a n , n − 1 ∣ > 0 \begin{cases}|a_{11}|>|a_{12}|>0\\|a_{ii}|\geq|a_{i,i-1}|+|a_{i,i+1}|>0,i=2,3,\cdots,n-1\\|a_{nn}|>|a_{n,n-1}|>0\end{cases} a11>a12>0aiiai,i1+ai,i+1>0,i=2,3,,n1ann>an,n1>0

则称 A x = b Ax=b Ax=b对角占优的三对角线方程组。

A x = b Ax=b Ax=b 进行LU分解: A = L U A=LU A=LU
L = [ 1 l 21 1 0 l 32 1 ⋮ ⋱ ⋱ ⋱ 0 ⋯ 0 l n , n − 1 1 ]    , U = [ u 11 a 12 0 ⋯ 0 u 22 a 23 ⋯ 0 ⋱ ⋱ u n − 1 , n − 1 a n − 1 , n u n n ] L=\left[\begin{matrix}1&&&&\\l_{21}&1&&&\\0&l_{32}&1&&\\\vdots&\ddots&\ddots&\ddots&\\0&\cdots&0&l_{n,n-1}&1\end{matrix}\right]\ \ ,U=\left[\begin{matrix}u_{11}&a_{12}&0&\cdots&0\\&u_{22}&a_{23}&\cdots&0\\&&\ddots&\ddots\\&&&u_{n-1,n-1}&a_{n-1,n}\\&&&&u_{nn}\end{matrix}\right] L=1l21001l3210ln,n11  ,U=u11a12u220a23un1,n100an1,nunn
由矩阵乘法和矩阵相等得
{ u 11 = a 11 l i , i − 1 = a i , i − 1 / u i − 1 , i − 1 u i i = a i i − l i , i − 1 a i − 1 , i        ( i = 2 , 3 , ⋯   , n ) \begin{cases}u_{11}=a_{11}\\l_{i,i-1}=a_{i,i-1}/u_{i-1,i-1}\\u_{ii}=a_{ii}-l_{i,i-1}a_{i-1,i}\end{cases}\ \ \ \ \ \ (i=2,3,\cdots,n) u11=a11li,i1=ai,i1/ui1,i1uii=aiili,i1ai1,i      (i=2,3,,n)
得到LU分解之后,就可通过方程组
L y = b U x = y Ly=b\\Ux=y Ly=bUx=y
得到线性方程组的解
{ y 1 = b 1 y i = b i − l i , i − 1 y i − 1 i = 2 , 3 , ⋯   , n       { x n = y n / u n n x i = ( y i − a i , i + 1 ∗ x i + 1 ) / u i i       i = n − 1 , n − 2 , ⋯   , 1 \begin{cases}y_1=b_1\\y_i=b_i-l_{i,i-1}y_{i-1}\\i=2,3,\cdots,n\end{cases}\ \ \ \ \ \begin{cases}x_n=y_n/u_{nn}\\x_i=({y_i-a_{i,i+1}*x_{i+1}})/{u_{ii}}\ \ \ \ \ i=n-1,n-2,\cdots,1\end{cases} y1=b1yi=bili,i1yi1i=2,3,,n     {xn=yn/unnxi=(yiai,i+1xi+1)/uii     i=n1,n2,,1
上述方法通常称为 “追赶法”。“追”的过程要做4(n-1)次乘除法,“赶”的过程需要做n次乘除法,总计算量:5n-4。

追赶法本质上是没有选主元的高斯消元法,对一般的三对角方程组来说“追赶法”的计算过程是不稳定的。但当三对角方程组中的系数矩阵满足严格对角占优时,“追赶法”不会出现中间结果数量级的巨大增长和舍入误差的严重积累。

解对称正定矩阵方程组的平方根法

平方根法又称楚列斯基(Cholesky)分解法

定理3:设 A ∈ R n × n A\in R^{n\times n} ARn×n 是对称正定矩阵,则存在唯一分解(称为楚列斯基分解):
A = L ~ L ~ T A=\tilde{L}\tilde{L}^T A=L~L~T
其中 L ~ \tilde{L} L~ 是对角元为正的下三角阵:
L ~ = [ l 11 l 21 l 22 ⋮ ⋮ ⋱ l n 1 l n 2 ⋯ l n n ] \tilde{L}=\left[\begin{matrix}l_{11}&&&\\l_{21}&l_{22}&&\\\vdots&\vdots&\ddots&\\l_{n1}&l_{n2}&\cdots&l_{nn}\end{matrix}\right] L~=l11l21ln1l22ln2lnn

待定系数法确定 l i j : a i j = ∑ p = 1 j l i p l j p , 1 ≤ j ≤ i ≤ n l_{ij}:a_{ij}=\sum_{p=1}^jl_{ip}l_{jp},1\leq j\leq i\leq n lij:aij=p=1jlipljp,1jin

a 11 = l 11 2 a_{11}=l_{11}^2 a11=l112,得 l 11 = a 11 l_{11}=\sqrt{a_{11}} l11=a11

a i 1 = l 11 l i 1 a_{i1}=l_{11}l_{i1} ai1=l11li1,得 l i 1 = a i 1 / l 11 , i = 1 , 2 , ⋯   , n l_{i1}=a_{i1}/l_{11},i=1,2,\cdots,n li1=ai1/l11,i=1,2,,n

假设已算出 L L L 的前j-1列元素,由 a j j = ∑ k = 1 j l j k 2 a_{jj}=\sum_{k=1}^jl_{jk}^2 ajj=k=1jljk2

l j j = ( a j j − ∑ k = 1 j − 1 l j k 2 ) 1 / 2 l_{jj}=(a_{jj}-\sum_{k=1}^{j-1}l_{jk}^2)^{1/2} ljj=(ajjk=1j1ljk2)1/2

再由 a i j = ∑ k = 1 j − 1 l i k l j k + l i j l j j a_{ij}=\sum_{k=1}^{j-1}l_{ik}l_{jk}+l_{ij}l_{jj} aij=k=1j1likljk+lijljj

l i j = ( a i j − ∑ k = 1 j − 1 l i k l j k ) / l j j , i = j + 1 , ⋯   , n ; j ≠ n l_{ij}=(a_{ij}-\sum_{k=1}^{j-1}l_{ik}l_{jk})/l_{jj},i=j+1,\cdots,n;j\neq n lij=(aijk=1j1likljk)/ljj,i=j+1,,n;j=n

可求出所有的 l i j l_{ij} lij

向量和矩阵的范数

向量的范数

范数是对函数、向量和矩阵定义的一种度量形式,任何对象的范数值都是一个非负整数向量范数是度量向量长度的一种定义形式。

定义1:对任一向量 x ∈ C n x\in C^n xCn,称实数 N ( x ) = ∣ ∣ x ∣ ∣ N(x)=||x|| N(x)=x 为向量 x x x范数。||·||满足下列关系式:

  1. 正定性(非负性): ∀ x ∈ C n , ∣ ∣ x ∣ ∣ ≥ 0 , 且 ∣ ∣ x ∣ ∣ = 0 ⇐ ⇒ x = 0 \forall x\in C^n,||x||\geq0,且||x||=0\Leftarrow\Rightarrow x=0 xCn,x0,x=0x=0
  2. 齐次性: ∀ x ∈ C n 和 α ∈ C , 有 ∣ ∣ α x ∣ ∣ = ∣ α ∣ ⋅ ∣ ∣ x ∣ ∣ \forall x\in C^n和\alpha\in C,有||\alpha x||=|\alpha|·||x|| xCnαC,αx=αx
  3. 三角不等式: ∀ x , y ∈ C n , ∣ ∣ x + y ∣ ∣ ≤ ∣ ∣ x ∣ ∣ + ∣ ∣ y ∣ ∣ \forall x,y\in C^n,||x+y||\leq||x||+||y|| x,yCn,x+yx+y

几个常用的向量范数:

  1. ∣ ∣ x ∣ ∣ 1 = ∑ j = 1 n ∣ x j ∣ ||x||_1=\sum_{j=1}^n|x_j| x1=j=1nxj
  2. ∣ ∣ x ∣ ∣ 2 = ( ∑ j = 1 n ∣ x j ∣ 2 ) 1 2 ||x||_2=(\sum_{j=1}^n|x_j|^2)^{\frac{1}{2}} x2=(j=1nxj2)21
  3. ∣ ∣ x ∣ ∣ ∞ = m a x 1 ≤ j ≤ n ∣ x j ∣ ||x||_\infin=max_{1\leq j\leq n}|x_j| x=max1jnxj

分别称为向量 x x x1范数、2范数和 ∞ \infin 范数,更一般的,称: ∣ ∣ x ∣ ∣ p = ( ∑ j = 1 n ∣ x j ∣ p ) 1 p ||x||_p=(\sum_{j=1}^n|x_j|^p)^{\frac{1}{p}} xp=(j=1nxjp)p1p范数

矩阵的范数

定义2:对任一矩阵 A ∈ C n × n A\in C^{n\times n} ACn×n,称实数 N ( A ) = ∣ ∣ A ∣ ∣ N(A)=||A|| N(A)=A 为矩阵 A A A范数。||·||满足下列关系式:

  1. 正定性(非负性): ∀ A ∈ C n × n , ∣ ∣ A ∣ ∣ ≥ 0 , 且 ∣ ∣ A ∣ ∣ = 0 ⇐ ⇒ A = 0 \forall A\in C^{n\times n},||A||\geq0,且||A||=0\Leftarrow\Rightarrow A=0 ACn×n,A0,A=0A=0
  2. 齐次性: ∀ A ∈ C n × n 和 α ∈ C , 有 ∣ ∣ α A ∣ ∣ = ∣ α ∣ ⋅ ∣ ∣ A ∣ ∣ \forall A\in C^{n\times n}和\alpha\in C,有||\alpha A||=|\alpha|·||A|| ACn×nαC,αA=αA
  3. 三角不等式: ∀ A , B ∈ C n × n , ∣ ∣ A + B ∣ ∣ ≤ ∣ ∣ A ∣ ∣ + ∣ ∣ B ∣ ∣ \forall A,B\in C^{n\times n},||A+ B||\leq||A||+||B|| A,BCn×n,A+BA+B
  4. 矩阵乘法不等式: ∀ A , B ∈ C n × n , ∣ ∣ A B ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ B ∣ ∣ \forall A,B\in C^{n\times n},||A B||\leq||A||·||B|| A,BCn×n,ABAB

矩阵、向量乘法的相容性: ∣ ∣ A x ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ ||Ax||\leq ||A||·||x|| AxAx

∣ ∣ A ∣ ∣ r = m a x x ≠ 0 ∣ ∣ A x ∣ ∣ r ∣ ∣ x ∣ ∣ r ||A||_r=max_{x\neq0}\frac{||Ax||_r}{||x||_r} Ar=maxx=0xrAxr从属于向量的范数,或称为由向量范数导出的范数,满足矩阵、向量乘法的相容性: ∣ ∣ A x ∣ ∣ r ≤ ∣ ∣ A ∣ ∣ r ⋅ ∣ ∣ x ∣ ∣ r ||Ax||_r\leq ||A||_r·||x||_r AxrArxr

几个常用的矩阵范数:

  1. ∣ ∣ A ∣ ∣ 1 = m a x 1 ≤ j ≤ n ∑ i = 1 n ∣ a i j ∣ ||A||_1=max_{1\leq j\leq n}\sum_{i=1}^n|a_{ij}| A1=max1jni=1naij
  2. ∣ ∣ A ∣ ∣ 2 = [ λ m a x ( A T A ) ] 1 / 2 ||A||_2=[\lambda_{max}(A^TA)]^{1/2} A2=[λmax(ATA)]1/2 λ m a x ( ⋅ ) \lambda_{max}(·) λmax() 是矩阵的最大特征值
  3. ∣ ∣ A ∣ ∣ ∞ = m a x 1 ≤ i ≤ n ∑ j = 1 n ∣ a i j ∣ ||A||_{\infin}=max_{1\leq i\leq n}\sum_{j=1}^n|a_{ij}| A=max1inj=1naij
  4. ∣ ∣ A ∣ ∣ F = ( ∑ i = 1 n ∑ j = 1 n ∣ a i j ∣ 2 ) 1 / 2 ||A||_F=(\sum_{i=1}^n\sum_{j=1}^n|a_{ij}|^2)^{1/2} AF=(i=1nj=1naij2)1/2

分别称为矩阵A的1范数(列模)、2范数(谱模)、 ∞ \infin 范数(行模)和F范数。

迭代法

求解线性方程组: A x = b Ax=b Ax=b,其中A为非奇异矩阵,b为n元非零向量,将其等价地转化为方程组 x = B x + f x=Bx+f x=Bx+f

选取初始向量 x ( 0 ) = ( x 1 ( 0 ) , x 2 ( 0 ) , ⋯   , x n ( 0 ) ) T x^{(0)}=(x_1^{(0)},x_2^{(0)},\cdots,x_n^{(0)})^T x(0)=(x1(0),x2(0),,xn(0))T,则可构造迭代法
x ( k + 1 ) = B x ( k ) + f x^{(k+1)}=Bx^{(k)}+f x(k+1)=Bx(k)+f
得到迭代向量序列 { x ( k ) } \{x^{(k)}\} {x(k)},其中 x ( k ) = ( x 1 ( k ) , x 2 ( k ) , ⋯   , x n ( k ) ) T x^{(k)}=(x_1^{(k)},x_2^{(k)},\cdots,x_n^{(k)})^T x(k)=(x1(k),x2(k),,xn(k))T。若 x ( k ) x^{(k)} x(k) 收敛于 x ∗ x^* x,则: x ∗ = B x ∗ + f x^*=Bx^*+f x=Bx+f x ∗ x^* x就是方程组的解,称B为迭代矩阵。若迭代序列收敛,则称迭代法收敛,否则发散。

雅可比迭代法

将A分解为:
A = D − L − U A=D-L-U A=DLU
其中: D = d i a g ( a 11 , a 22 , ⋯   , a n n ) D=diag(a_{11},a_{22},\cdots,a_{nn}) D=diag(a11,a22,,ann)
L = [ 0 − a 21 0 − a 31 − a 32 0 ⋮ ⋮ ⋱ − a n 1 − a n 2 ⋯ a n , n − 1 0 ]     U = [ 0 − a 12 − a 13 ⋯ − a 1 n 0 − a 23 ⋯ − a 2 n ⋱ ⋱ ⋮ 0 − a n − 1 , n 0 ] L=\left[\begin{matrix}0&&&&\\-a_{21}&0&&&\\-a_{31}&-a_{32}&0&&\\\vdots&\vdots&\ddots&\\-a_{n1}&-a_{n2}&\cdots&a_{n,n-1}&0\end{matrix}\right]\ \ \ U=\left[\begin{matrix}0&-a_{12}&-a_{13}&\cdots&-a_{1n}\\&0&-a_{23}&\cdots&-a_{2n}\\&&\ddots&\ddots&\vdots\\&&&0&-a_{n-1,n}\\&&&&0\end{matrix}\right] L=0a21a31an10a32an20an,n10   U=0a120a13a230a1na2nan1,n0
A x = b → ( D − L − U ) x = b → D x = ( L + U ) x + b Ax=b\rightarrow(D-L-U)x=b\rightarrow Dx=(L+U)x+b Ax=b(DLU)x=bDx=(L+U)x+b,可得雅可比迭代公式:
x ( k + 1 ) = B J x ( k ) + f J , k = 0 , 1 , 2 , ⋯ x^{(k+1)}=B_Jx^{(k)}+f_J,k=0,1,2,\cdots x(k+1)=BJx(k)+fJ,k=0,1,2,
其中雅可比迭代矩阵 B J = D − 1 ( L + U ) , f J = D − 1 b B_J=D^{-1}(L+U),f_J=D^{-1}b BJ=D1(L+U),fJ=D1b

雅可比迭代公式的分量形式:
x i ( k + 1 ) = 1 a i i ( b i − ∑ j = 1 , j ≠ i n a i j x j ( k ) ) x_i^{(k+1)}=\frac{1}{a_{ii}}(b_i-\sum_{j=1,j\neq i}^na_{ij}x_j^{(k)}) xi(k+1)=aii1(bij=1,j=inaijxj(k))

高斯-赛德尔迭代法

( D − L ) x = U x + b (D-L)x=Ux+b (DL)x=Ux+b,可得高斯-赛德尔(Gauss-Seidel)迭代公式
x ( k + 1 ) = B G x ( k ) + f G , k = 0 , 1 , 2 , ⋯ x^{(k+1)}=B_Gx^{(k)}+f_G,k=0,1,2,\cdots x(k+1)=BGx(k)+fG,k=0,1,2,
其中高斯-赛德尔矩阵 B G = ( D − L ) − 1 U , f G = ( D − L ) − 1 b B_G=(D-L)^{-1}U,f_G=(D-L)^{-1}b BG=(DL)1U,fG=(DL)1b

高斯-赛德尔迭代公式的分量形式:
x i ( k + 1 ) = 1 a i i ( b i − ∑ j = 1 i − 1 a i j x j ( k + 1 ) − ∑ j = i + 1 n a i j x j ( k ) ) x_i^{(k+1)}=\frac{1}{a_{ii}}(b_i-\sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}-\sum_{j=i+1}^na_{ij}x_j^{(k)}) xi(k+1)=aii1(bij=1i1aijxj(k+1)j=i+1naijxj(k))
J迭代法与G-S迭代法的收敛范围并不重合,只是部分相交。 也就是说,可能有J迭代法收敛而G-S迭代法发散的情形发生,G-S迭代法并不是总比J迭代法收敛。在都收敛的情况下,也不能保证G-S迭代法比J迭代法收敛快。

迭代收敛条件与误差估计

定义3:设矩阵 A ∈ C n × n A\in C^{n\times n} ACn×n 的特征值为 λ 1 , λ 2 , ⋯   , λ n \lambda_1,\lambda_2,\cdots,\lambda_n λ1,λ2,,λn,称
ρ ( A ) = m a x 1 ≤ j ≤ n ∣ λ j ∣ \rho(A)=max_{1\leq j\leq n}|\lambda_j| ρ(A)=max1jnλj
A A A谱半径

定理4:矩阵 A A A 的谱半径不大于矩阵 A A A 的任一算子范数 ∣ ∣ A ∣ ∣ r ||A||_r Ar

证明:若 λ \lambda λ 是矩阵 A A A 的特征值(即存在非零向量 x x x 使得: A x = λ x Ax=\lambda x Ax=λx),则
∣ λ ∣ ⋅ ∣ ∣ x ∣ ∣ r = ∣ ∣ λ x ∣ ∣ r = ∣ ∣ A x ∣ ∣ r ≤ ∣ ∣ A ∣ ∣ r ⋅ ∣ ∣ x ∣ ∣ r ∣ λ ∣ ≤ ∣ ∣ A ∣ ∣ r 所 以 , ρ ( A ) ≤ ∣ ∣ A ∣ ∣ r |\lambda|·||x||_r=||\lambda x||_r=||Ax||_r\leq ||A||_r·||x||_r\\|\lambda|\leq ||A||_r\\所以,\rho(A)\leq ||A||_r λxr=λxr=AxrArxrλArρ(A)Ar

由于矩阵范数计算要比矩阵谱半径计算简单得多,所以常用矩阵范数来估计矩阵特征值的上界。

迭代公式收敛的充要条件

定理8:迭代公式 x ( k + 1 ) = B x ( k ) + f x^{(k+1)}=Bx^{(k)}+f x(k+1)=Bx(k)+f 对任何初始向量 x ( 0 ) x^{(0)} x(0) 都收敛的充要条件是 ρ ( B ) < 1 \rho(B)<1 ρ(B)<1;收敛时, ρ ( B ) \rho(B) ρ(B) 越小,则收敛速度越快。

证明: x ∗ x^* x 为方程的解, x ∗ = B x ∗ + f x^*=Bx^*+f x=Bx+f,有 x ( k ) − x ∗ = B ( x ( k − 1 ) − x ∗ ) = B k ( x ( 0 ) − x ∗ ) , k = 1 , 2 , ⋯ x^{(k)}-x^*=B(x^{(k-1)}-x^*)=B^k(x^{(0)}-x^*),k=1,2,\cdots x(k)x=B(x(k1)x)=Bk(x(0)x),k=1,2,。所以,迭代公式对任何初始向量 x ( 0 ) x^{(0)} x(0) 都收敛的充要条件是 B k → 0 , k → ∞ B^k\rightarrow0,k\rightarrow\infin Bk0,k,即 ρ ( B ) < 1 \rho(B)<1 ρ(B)<1

若存在矩阵范数 ∣ ∣ ⋅ ∣ ∣ r ||·||_r r使得 ∣ ∣ B ∣ ∣ r < 1 ||B||_r<1 Br<1则由 ρ ( B ) ≤ ∣ ∣ B ∣ ∣ r \rho(B) ≤||B||_r ρ(B)Br知,迭代法收敛。

迭代法收敛的充分条件

定理5:若迭代过程 x ( k + 1 ) = B x ( k ) + f x^{(k+1)}=Bx^{(k)}+f x(k+1)=Bx(k)+f 中迭代矩阵 B B B 满足 ∣ ∣ B ∣ ∣ r = q < 1 ||B||_r=q<1 Br=q<1,则

  1. 对任意初始向量 x ( 0 ) x^{(0)} x(0),该迭代过程均收敛于方程 x = B x + f x=Bx+f x=Bx+f 的唯一解 x ∗ x^* x
  2. ∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ 1 1 − q ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ r ||x^*-x^{(k)}||_r\leq\frac{1}{1-q}||x^{(k+1)}-x^{(k)}||_r xx(k)r1q1x(k+1)x(k)r
  3. ∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ q k 1 − q ∣ ∣ x ( 1 ) − x ( 0 ) ∣ ∣ r ||x^*-x^{(k)}||_r\leq\frac{q^k}{1-q}||x^{(1)}-x^{(0)}||_r xx(k)r1qqkx(1)x(0)r

证明:1.:由 ∣ λ ∣ ≤ ρ ( B ) ≤ ∣ ∣ B ∣ ∣ r = q < 1 |\lambda|\leq\rho(B)\leq||B||_r=q<1 λρ(B)Br=q<1,得 d e t ( I − B ) ≠ 0 det(I-B)\neq0 det(IB)=0,故方程 ( I − B ) x = f (I-B)x=f (IB)x=f 有唯一解 x ∗ x^* x

x ∗ − x ( k + 1 ) = ( B x ∗ + f ) − ( B x ( k ) + f ) = B ( x ∗ − x ( k ) ) x^*-x^{(k+1)}=(Bx^*+f)-(Bx^{(k)}+f)=B(x^*-x^{(k)}) xx(k+1)=(Bx+f)(Bx(k)+f)=B(xx(k)),得
∣ ∣ x ∗ − x ( k + 1 ) ∣ ∣ r ≤ ∣ ∣ B ∣ ∣ r ∣ ∣ x ∗ − x ( k ) ∣ ∣ r = q ∣ ∣ x ∗ − x ( k ) ∣ ∣ r 0 ≤ ∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ q k ∣ ∣ x ∗ − x ( 0 ) ∣ ∣ r 得   l i m k → ∞ ∣ ∣ x ∗ − x ( k ) ∣ ∣ r = 0 从 而 , l i m k → ∞ x ( k ) = x ∗ ||x^*-x^{(k+1)}||_r\leq||B||_r||x^*-x^{(k)}||_r=q||x^*-x^{(k)}||_r\\0\leq||x^*-x^{(k)}||_r\leq q^k||x^*-x^{(0)}||_r\\得\ lim_{k\rightarrow\infin}||x^*-x^{(k)}||_r=0\\从而,lim_{k\rightarrow\infin}x^{(k)}=x^* xx(k+1)rBrxx(k)r=qxx(k)r0xx(k)rqkxx(0)r limkxx(k)r=0,limkx(k)=x
2.: ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ r = ∣ ∣ ( x ∗ − x ( k ) ) − ( x ∗ − x ( k + 1 ) ) ∣ ∣ r ≥ ∣ ∣ x ∗ − x ( k ) ∣ ∣ r − ∣ ∣ x ∗ − x ( k + 1 ) ∣ ∣ r ≥ ∣ ∣ x ∗ − x ( k ) ∣ ∣ r − q ∣ ∣ x ∗ − x ( k ) ∣ ∣ r = ( 1 − q ) ∣ ∣ x ∗ − x ( k ) ∣ ∣ r ||x^{(k+1)}-x^{(k)}||_r=||(x^*-x^{(k)})-(x^*-x^{(k+1)})||_r\geq||x^*-x^{(k)}||_r-||x^*-x^{(k+1)}||_r\geq||x^*-x^{(k)}||_r-q||x^*-x^{(k)}||_r=(1-q)||x^*-x^{(k)}||_r x(k+1)x(k)r=(xx(k))(xx(k+1))rxx(k)rxx(k+1)rxx(k)rqxx(k)r=(1q)xx(k)r

即得:
∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ 1 1 − q ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ r ||x^*-x^{(k)}||_r\leq\frac{1}{1-q}||x^{(k+1)}-x^{(k)}||_r xx(k)r1q1x(k+1)x(k)r
3.: ∣ ∣ x ( k + 1 ) − x ( k ) ∣ ∣ r = ∣ ∣ B x ( k ) + f − B x ( k − 1 ) − f ∣ ∣ r = ∣ ∣ B x ( k ) − B x ( k − 1 ) ∣ ∣ r = q ∣ ∣ x ( k ) − x ( k − 1 ) ∣ ∣ r = q k ∣ ∣ x ( 1 ) − x ( 0 ) ∣ ∣ r ||x^{(k+1)}-x^{(k)}||_r=||Bx^{(k)}+f-Bx^{(k-1)}-f||_r=||Bx^{(k)}-Bx^{(k-1)}||_r=q||x^{(k)}-x^{(k-1)}||_r=q^k||x^{(1)}-x^{(0)}||_r x(k+1)x(k)r=Bx(k)+fBx(k1)fr=Bx(k)Bx(k1)r=qx(k)x(k1)r=qkx(1)x(0)r

即得:
∣ ∣ x ∗ − x ( k ) ∣ ∣ r ≤ q k 1 − q ∣ ∣ x ( 1 ) − x ( 0 ) ∣ ∣ r ||x^*-x^{(k)}||_r\leq\frac{q^k}{1-q}||x^{(1)}-x^{(0)}||_r xx(k)r1qqkx(1)x(0)r

雅可比迭代法与高斯-赛德尔迭代法收敛的充分条件:

定理6:若 A x = b Ax=b Ax=b 的系数矩阵 A = ( a i j ) n × n A=(a_{ij})_{n\times n} A=(aij)n×n 按行或列严格对角占优,即
∣ a j j ∣ > ∑ j = 1 , j ≠ i n ∣ a i j ∣ , i = 1 , 2 , ⋯   , n 或 : ∣ a j j ∣ > ∑ i = 1 , i ≠ j n ∣ a i j ∣ , j = 1 , 2 , ⋯   , n |a_{jj}|>\sum_{j=1,j\neq i}^n|a_{ij}|,i=1,2,\cdots,n\\或:|a_{jj}|>\sum_{i=1,i\neq j}^n|a_{ij}|,j=1,2,\cdots,n ajj>j=1,j=inaij,i=1,2,,n:ajj>i=1,i=jnaij,j=1,2,,n
则方程组有唯一解,且对于任意初始向量,雅可比迭代法和高斯-赛德尔迭代法都收敛。

定理7:若 A x = b Ax=b Ax=b 的系数矩阵 A = ( a i j ) n × n A=(a_{ij})_{n\times n} A=(aij)n×n 为对称正定矩阵,则对任意初始向量,高斯-赛德尔迭代法收敛。

逐次超松弛(SOR)迭代法

逐次超松驰(SOR)迭代法实际上是对高斯-赛德尔迭代法加权平均,即:
x i ( k + 1 ) = ( 1 − ω ) x i ( k ) + ω x ~ i ( k + 1 ) , i = 1 , 2 , ⋯   , n 其 中 x ~ i ( k + 1 ) 为 高 斯 − 赛 德 尔 的 迭 代 解 : x ~ i ( k + 1 ) = 1 a i i ( b i − ∑ j = 1 i − 1 a i j x j ( k + 1 ) − ∑ j = i + 1 n a i j x j ( k ) ) x_i^{(k+1)}=(1-\omega)x_i^{(k)}+\omega\tilde{x}_i^{(k+1)},i=1,2,\cdots,n\\其中\tilde{x}_i^{(k+1)}为高斯-赛德尔的迭代解:\tilde{x}_i^{(k+1)}=\frac{1}{a_{ii}}(b_i-\sum_{j=1}^{i-1}a_{ij}x_j^{(k+1)}-\sum_{j=i+1}^na_{ij}x_j^{(k)}) xi(k+1)=(1ω)xi(k)+ωx~i(k+1),i=1,2,,nx~i(k+1):x~i(k+1)=aii1(bij=1i1aijxj(k+1)j=i+1naijxj(k))
矩阵形式:
x ( k + 1 ) = B ω x ( k ) + f ω , k = 0 , 1 , 2 , ⋯ 其 中 S O R 迭 代 矩 阵 : B ω = ( D − ω L ) − 1 [ ( 1 − ω ) D + ω U ] , f ω = ω ( D − ω L ) − 1 b x^{(k+1)}=B_{\omega}x^{(k)}+f_{\omega},k=0,1,2,\cdots\\其中SOR迭代矩阵:B_{\omega}=(D-\omega L)^{-1}[(1-\omega)D+\omega U],f_{\omega}=\omega(D-\omega L)^{-1}b x(k+1)=Bωx(k)+fω,k=0,1,2,SORBω=(DωL)1[(1ω)D+ωU],fω=ω(DωL)1b
由于 d e t ( B ω ) = d e t ( D − ω L ) − 1 ⋅ d e t [ ( 1 − ω ) D + ω U ] = 1 a 11 a 22 ⋯ a n n ⋅ ( 1 − ω ) n a 11 a 22 ⋯ a n n = ( 1 − ω ) n det(B_{\omega})=det(D-\omega L)^{-1}·det[(1-\omega)D+\omega U]=\frac{1}{a_{11}a_{22}\cdots a_{nn}}·(1-\omega)^na_{11}a_{22}\cdots a_{nn}=(1-\omega)^n det(Bω)=det(DωL)1det[(1ω)D+ωU]=a11a22ann1(1ω)na11a22ann=(1ω)n,得 λ 1 λ 2 ⋯ λ n = d e t ( B ω ) = ( 1 − ω ) n , ∣ 1 − ω ∣ n = ∣ λ 1 λ 2 ⋯ λ n ∣ ≤ ( ρ ( B ω ) ) n \lambda_1\lambda_2\cdots\lambda_n=det(B_{\omega})=(1-\omega)^n,|1-\omega|^n=|\lambda_1\lambda_2\cdots\lambda_n|\leq (\rho(B_\omega))^n λ1λ2λn=det(Bω)=(1ω)n1ωn=λ1λ2λn(ρ(Bω))n,所以有:

定理9::若 A x = b Ax=b Ax=b 的系数矩阵主对角线上元 a i i ≠ 0 a_{ii}\neq0 aii=0,则SOR法收敛的必要条件是 0 < ω < 2 0<\omega<2 0<ω<2

但并不是充分条件:也就是,当 0 < ω < 2 0<\omega<2 0<ω<2 时,并不能保证SOR迭代法一定收敛。

实际应用中,可以根据系数矩阵𝐴的性质以及计算的经验来选定合适的松驰因子 ω \omega ω,以加快收敛的速度。

定理10:若系数矩阵 A A A 是实对称正定矩阵,且松弛因子 0 < ω < 2 0<\omega<2 0<ω<2,则对任意初始向量,SOR迭代法收敛。

定理11:若系数矩阵 A A A 为弱对角占优矩阵,且为不可约矩阵,则雅可比迭代法、高斯-赛德尔迭代法均收敛。

定理12:若系数矩阵 A A A 为严格对角占优矩阵(或为弱对角占优不可约矩阵),且 0 < ω ≤ 1 0<\omega\leq1 0<ω1,则SOR迭代法收敛。

定义4:(收敛速度)称 R ( B ) = − l n ρ ( B ) R(B)=-ln\rho(B) R(B)=lnρ(B) 为迭代法的收敛速度,其中 B B B 为迭代矩阵。

方程组的状态与解的迭代改善

如果在 A x = b Ax=b Ax=b 中的初始数据 A , b A,b A,b 有一个小的扰动,对解的结果有什么影响?

方程组的状态与矩阵的条件数

初始数据 A , b A,b A,b 的微小变化引起了解的很大变化,称这样的方程组为病态方程组

  1. b b b 有一个扰动 δ b \delta b δb

    设相应方程组的解为 x ~ ( x ~ = x + δ x ) \tilde{x}(\tilde{x}=x+\delta x) x~(x~=x+δx),其中 x x x A x = b Ax=b Ax=b 的精确解。即 A x ~ = b + δ b A\tilde{x}=b+\delta b Ax~=b+δb,或 A ( x + δ x ) = b + δ b A(x+\delta x)=b+\delta b A(x+δx)=b+δb A δ x = δ b , δ x = A − 1 δ b A\delta x=\delta b,\delta x=A^{-1}\delta b Aδx=δbδx=A1δb,得
    ∣ ∣ δ x ∣ ∣ = ∣ ∣ A − 1 δ b ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ δ b ∣ ∣ ||\delta x||=||A^{-1}\delta b||\leq||A^{-1}||·||\delta b|| δx=A1δbA1δb
    ∣ ∣ b ∣ ∣ = ∣ ∣ A x ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ x ∣ ∣ ||b||=||Ax||\leq||A||·||x|| b=AxAx,即 1 ∣ ∣ x ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ b ∣ ∣ \frac{1}{||x||}\leq \frac{||A||}{||b||} x1bA

    所以
    ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||\delta x||}{||x||}\leq||A^{-1}||·||A||\frac{||\delta b||}{||b||} xδxA1Abδb
    即:解的相对误差不超过向量 b b b 的相对误差的 ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ||A^{−1}||·||A|| A1A 倍。

  2. A A A 有一个扰动 δ A \delta A δA (设 A + δ A A+\delta A A+δA 仍可逆)

    设相应方程组的解为 x ~ ( x ~ = x + δ x ) \tilde{x}(\tilde{x}=x+\delta x) x~(x~=x+δx),其中 x x x A x = b Ax=b Ax=b 的精确解。即 ( A + δ A ) x ~ = b (A+\delta A)\tilde{x}=b (A+δA)x~=b,或 ( A + δ A ) ( x + δ x ) = b (A+\delta A)(x+\delta x)=b (A+δA)(x+δx)=b δ A ( x + δ x ) + A δ x = 0 , δ x = − A − 1 δ A ( x + δ x ) \delta A(x+\delta x)+A\delta x=0,\delta x=-A^{-1}\delta A(x+\delta x) δA(x+δx)+Aδx=0,δx=A1δA(x+δx),得
    ∣ ∣ δ x ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ δ A ∣ ∣ ⋅ ∣ ∣ x + δ x ∣ ∣ ||\delta x||\leq||A^{-1}||·||\delta A||·||x+\delta x|| δxA1δAx+δx
    所以
    ∣ ∣ δ x ∣ ∣ ∣ ∣ x + δ x ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \frac{||\delta x||}{||x+\delta x||}\leq||A^{-1}||·||A||\frac{||\delta A||}{||A||} x+δxδxA1AAδA
    即:解的相对误差不超过系数矩阵相对误差的 ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ||A^{−1}||·||A|| A1A 倍。

这表明: ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ||A^{−1}||·||A|| A1A 反映了方程组 A x = b Ax=b Ax=b 的解对初始数据 A , b A,b A,b 扰动的灵敏度,从而可以用来刻画方程组的

病态程度。称 ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ ||A^{−1}||·||A|| A1A矩阵 A A A 的条件数,记作Cond(𝐴)或 𝜅(𝐴),即
C o n d ( A ) = ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ A ∣ ∣ Cond(A)=||A^{−1}||·||A|| Cond(A)=A1A
条件数与所取的矩阵范数有关,常用的有:
C o n d ∞ ( A ) = ∣ ∣ A − 1 ∣ ∣ ∞ ⋅ ∣ ∣ A ∣ ∣ ∞ C o n d 2 ( A ) = ∣ ∣ A − 1 ∣ ∣ 2 ⋅ ∣ ∣ A ∣ ∣ 2 = λ m a x ( A T A ) λ m i n ( A T A ) Cond_{\infin}(A)=||A^{−1}||_{\infin}·||A||_{\infin}\\ Cond_2(A)=||A^{−1}||_2·||A||_2=\sqrt{\frac{\lambda_{max(A^TA)}}{\lambda_{min(A^TA)}}} Cond(A)=A1ACond2(A)=A12A2=λmin(ATA)λmax(ATA)
其中 C o n d 2 ( A ) Cond_2(A) Cond2(A)谱条件数

定义5:设 A A A 是非奇异矩阵,若 C o n d ( A ) ≫ 1 Cond(A)≫1 Cond(A)1,则称方程组 A x = b Ax=b Ax=b病态方程组;若 C o n d ( A ) Cond(A) Cond(A) 相对较小,则称方程组 A x = b Ax=b Ax=b良态方程组

方程组可能出现病态的情况:

(1)用选主元消元法消元过程中出现小主元;

(2)系数行列式的绝对值相对很小;

(3)系数矩阵元素间在数量级上相差很大且无一定规律;

(4)出现了相对很大的解。

方程组近似解可靠性判别法

定理13: x ∗ x^* x 是方程组 A x = b Ax=b Ax=b A A A 非奇异且 b ≠ 0 b\neq0 b=0)的精确解。若 x ~ \tilde{x} x~ 是该方程组的近似解,其残余向量 r = b − A x ~ r=b-A\tilde{x} r=bAx~,则有
∣ ∣ x ∗ − x ~ ∣ ∣ ∣ ∣ x ∗ ∣ ∣ ≤ C o n d ( A ) ∣ ∣ r ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||x^*-\tilde{x}||}{||x^*||}\leq Cond(A)\frac{||r||}{||b||} xxx~Cond(A)br
证明:由 x ∗ − x ~ = A − 1 b − x ~ = A − 1 r x^*-\tilde{x}=A^{-1}b-\tilde{x}=A^{-1}r xx~=A1bx~=A1r 知: ∣ ∣ x ∗ − x ~ ∣ ∣ ≤ ∣ ∣ A − 1 ∣ ∣ ⋅ ∣ ∣ r ∣ ∣ ||x^*-\tilde{x}||\leq||A^{-1}||·||r|| xx~A1r。又由 b = A x ∗ b=Ax^* b=Ax ∣ ∣ b ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ x ∗ ∣ ∣ ||b||\leq||A||·||x^*|| bAx,由 A A A 非奇异且 b ≠ 0 b\neq0 b=0,得 x ∗ ≠ 0 x^*\neq0 x=0,故可得:
∣ ∣ 1 ∣ ∣ ∣ ∣ x ∗ ∣ ∣ ≤ ∣ ∣ A ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||1||}{||x^*||}\leq\frac{||A||}{||b||} x1bA
所以
∣ ∣ x ∗ − x ~ ∣ ∣ ∣ ∣ x ∗ ∣ ∣ ≤ C o n d ( A ) ∣ ∣ r ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||x^*-\tilde{x}||}{||x^*||}\leq Cond(A)\frac{||r||}{||b||} xxx~Cond(A)br
近似解 x ~ \tilde{x} x~ 的精度不仅依赖于残余向量 r r r 的大小,而且还依赖于矩阵 A A A 的条件数。所以,对于病态方程组,即使 r r r 很小,也不能保证 x ~ \tilde{x} x~ 的可靠性。

近似解的迭代改善法

设用某种方法得到方程 A x = b Ax=b Ax=b A A A 非奇异且 b ≠ 0 b\neq0 b=0)的某个近似解 x ~ = x ( 1 ) \tilde{x}=x^{(1)} x~=x(1) 后,若 x ( 1 ) x^{(1)} x(1) 未达到精度要求,可采用以下方法:

误差的改进: 如果数值解的精度太低,可用如下方法改进:

  1. 计算残差 r ( 1 ) = b − A x ( 1 ) r^{(1)}=b-Ax^{(1)} r(1)=bAx(1)(用双精度计算)。
  2. 用列主元消元法解方程组 A x = r ( 1 ) Ax=r^{(1)} Ax=r(1),得到近似解 d ( 1 ) d^{(1)} d(1)
  3. d ( 1 ) d^{(1)} d(1) 修正 x ( 1 ) x^{(1)} x(1),得到 A x = b Ax=b Ax=b 的新近似值 x ( 2 ) = x ( 1 ) + d ( 1 ) x^{(2)}=x^{(1)}+d^{(1)} x(2)=x(1)+d(1)
  4. 计算 e = ∣ ∣ d ( 1 ) ∣ ∣ ∞ ∣ ∣ x ( 1 ) ∣ ∣ ∞ e=\frac{||d^{(1)}||_{\infin}}{||x^{(1)}||_{\infin}} e=x(1)d(1),若 e < ε e<\varepsilon e<ε ε \varepsilon ε 为精度控制常数),则取 x ∗ ≈ x ( 2 ) x^*\approx x^{(2)} xx(2);否则视 x ( 2 ) x^{(2)} x(2) x ( 1 ) x^{(1)} x(1),重复上述过程,直到满足条件 e < ε e<\varepsilon e<ε

预条件处理方法

对于病态方程组 A x = b Ax=b Ax=b A A A 的条件数 C o n d ( A ) Cond(A) Cond(A) 比较大,为此,寻找可逆矩阵(一般为对角矩阵) P , Q P,Q P,Q,使得 C o n d ( P A Q ) < C o n d ( A ) Cond(PAQ)<Cond(A) Cond(PAQ)<Cond(A),将 A x = b Ax=b Ax=b 转化为 P A Q ( Q − 1 x ) = P b PAQ(Q^{-1}x)=Pb PAQ(Q1x)=Pb

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值