三、解线性方程组的迭代法

二、几种基本的迭代法

2.1 雅可比(Jacobi)迭代法

设方程组
{ 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 ( 3 − 8 a ) \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\\\cdots\cdots\\a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=b_n\end{cases}\quad\quad\quad\quad\quad(3-8a) a11x1+a12x2++a1nxn=b1a21x1+a22x2++a2nxn=b2an1x1+an2x2++annxn=bn(38a)

的系数矩阵 A A A非奇异,且 a i i ≠ 0   ( i = 1 , 2 , … , n ) a_{ii}\ne0\ (i=1,2,\dots,n) aii=0 (i=1,2,,n)。将方程组(3-8a)变形为:

{ x 1 = b 12 x 2 + b 13 x 3 + ⋯ + b 1 n x n + g 1 x 2 = b 21 x 1 + b 23 x 3 + ⋯ + b 2 n x n + g 2 ⋯ ⋯ x n = b n 1 x 1 + b n 2 x 2 + ⋯ + b n   n − 1 x n − 1 + g n ( 3 − 8 b ) \begin{cases}x_1=\quad b_{12}x_2+b_{13}x_3+\cdots+b_{1n}x_n+g_1\\x_2=b_{21}x_1\quad+b_{23}x_3+\cdots+b_{2n}x_n+g_2\\\cdots\cdots\\x_n=b_{n1}x_1+b_{n2}x_2+\cdots+b_{n\ n-1}x_{n-1}+g_n\end{cases}\quad\quad\quad\quad\quad(3-8b) x1=b12x2+b13x3++b1nxn+g1x2=b21x1+b23x3++b2nxn+g2xn=bn1x1+bn2x2++bn n1xn1+gn(38b)

其中 b i j = − a i j a i i ( i ≠ j ,   i , j = 1 , 2 , … , n ) ,   g i = b i a i i ( i = 1 , 2 , … , n ) b_{ij}=-\frac{a_{ij}}{a_{ii}}(i\ne j,\ i,j=1,2,\dots,n),\ g_i=\frac{b_i}{a_{ii}}(i=1,2,\dots,n) bij=aiiaij(i=j, i,j=1,2,,n), gi=aiibi(i=1,2,,n)

记对角矩阵:

D = d i a g ( a 11 , a 22 , … , a n n ) , D − 1 = d i a g ( 1 a 11 , 1 a 22 , … , 1 a n n ) D=diag(a_{11},a_{22},\dots,a_{nn}),\quad D^{-1}=diag(\frac{1}{a_{11}},\frac{1}{a_{22}},\dots,\frac{1}{a_{nn}}) D=diag(a11,a22,,ann),D1=diag(a111,a221,,ann1)

则:

B = [ 0 b 12 ⋯ b 1   n − 1 b 1 n b 21 0 ⋯ b 2   n − 1 b 2 n ⋮ ⋮ ⋮ ⋮ b n 1 b n 2 ⋯ b n   n − 1 0 ] = I − D − 1 A , g = [ g 1 g 2 ⋮ g n ] = D − 1 b ( 3 − 9 ) B=\begin{bmatrix}0&b_{12}&\cdots&b_{1\ n-1}&b_{1n}\\b_{21}&0&\cdots&b_{2\ n-1}&b_{2n}\\\vdots&\vdots&&\vdots&\vdots\\b_{n1}&b_{n2}&\cdots&b_{n\ n-1}&0\end{bmatrix}=I-D^{-1}A,g=\begin{bmatrix}g_1\\g_2\\\vdots\\g_n\end{bmatrix}=D^{-1}b\quad\quad\quad\quad(3-9) B=0b21bn1b120bn2b1 n1b2 n1bn n1b1nb2n0=ID1A,g=g1g2gn=D1b(39)

方程(3-8a)可简记为:

x = B x + g ( 3 − 10 ) x=Bx+g\quad\quad\quad\quad\quad(3-10) x=Bx+g(310)

将初始向量 x ( 0 ) x^{(0)} x(0)代入迭代公式:

x ( k + 1 ) = B x ( k ) + g ( k = 0 , 1 , … , ) ( 3 − 11 ) x^{(k+1)}=Bx^{(k)}+g\quad(k=0,1,\dots,)\quad\quad\quad\quad\quad(3-11) x(k+1)=Bx(k)+g(k=0,1,,)(311)

产生向量序列 { x ( k ) } \{x^{(k)}\} {x(k)},公式 ( 3 − 11 ) (3-11) (311)所给出的迭代法称为Jacobi迭代法,又称简单迭代法。称式 ( 3 − 11 ) (3-11) (311)为Jacobi迭代法的迭代公式, B B B为其迭代矩阵。

Jacobi迭代法的计算过程如下:

  1. 输入 A = ( a i j ) , b = ( b 1 , … , b n ) A=(a_{ij}),b=(b_1,\dots,b_n) A=(aij),b=(b1,,bn),维数 n n n x ( 0 ) = ( x 1 ( 0 ) , x 2 ( 0 ) , … , x n ( 0 ) ) , ϵ x^{(0)}=(x_1^{(0)},x_2^{(0)},\dots,x_n^{(0)}),\epsilon x(0)=(x1(0),x2(0),,xn(0)),ϵ(?这里epsilon是怎么出来的),最大容许迭代次数 N N N
  2. k = 1 k=1 k=1
  3. i = 1 , 2 , … , n i=1,2,\dots,n i=1,2,,n
    x i = ( b i − ∑ j = 1 ,   j ≠ i n a i j x j ( 0 ) ) / a i i x_i=(b_i-\sum\limits_{j=1,\ j\ne i}^{n}a_{ij}x_{j}^{(0)})/a_{ii} xi=(bij=1, j=inaijxj(0))/aii
  4. ∥ x − x ( 0 ) ∥ < ϵ \Vert x-x^{(0)}\Vert<\epsilon xx(0)<ϵ,输出x,停机;否则转5
  5. k < N k<N k<N,置 k + 1 ⇒ k ,   x i ⇒ x i ( 0 ) ,   ( i = 1 , 2 , … , n ) k+1\Rightarrow k,\ x_i\Rightarrow x_{i}^{(0)},\ (i=1,2,\dots,n) k+1k, xixi(0), (i=1,2,,n),转3;否则,输出失败信息,停机
2.2 高斯-赛德尔(Gauss-Seidel)迭代法

在Jacobi迭代法中,计算 x i ( k + 1 ) x_{i}^{(k+1)} xi(k+1)时,分量 x 1 ( k + 1 ) , x 2 ( k + 1 ) , … , x i − 1 ( k + 1 ) x_1^{(k+1)},x_2^{(k+1)},\dots,x_{i-1}^{(k+1)} x1(k+1),x2(k+1),,xi1(k+1)已经算出,可以考虑用新的分量 x l ( k + 1 ) ,   l = 1 , 2 , … , i − 1 x_l^{(k+1)},\ l=1,2,\dots,i-1 xl(k+1), l=1,2,,i1代替旧的分量 x l ( k ) ,   l = 1 , 2 , … , i − 1 x_l^{(k)},\ l=1,2,\dots,i-1 xl(k), l=1,2,,i1,这就是Gauss-Seidel迭代法。Gauss-Seidel迭代法的计算公式为:

{ x 1 ( k + 1 ) = b 12 x 2 + b 13 x 3 + ⋯ + b 1 n x n + g 1 x 2 = b 21 x 1 + b 23 x 3 + ⋯ + b 2 n x n + g 2 ⋯ ⋯ x n = b n 1 x 1 + b n 2 x 2 + ⋯ + b n   n − 1 x n − 1 + g n ( 3 − 8 b ) \begin{cases}x_1^{(k+1)}=\quad b_{12}x_2+b_{13}x_3+\cdots+b_{1n}x_n+g_1\\x_2=b_{21}x_1\quad+b_{23}x_3+\cdots+b_{2n}x_n+g_2\\\cdots\cdots\\x_n=b_{n1}x_1+b_{n2}x_2+\cdots+b_{n\ n-1}x_{n-1}+g_n\end{cases}\quad\quad\quad\quad\quad(3-8b) x1(k+1)=b12x2+b13x3++b1nxn+g1x2=b21x1+b23x3++b2nxn+g2xn=bn1x1+bn2x2++bn n1xn1+gn(38b)

而且近似向量 x ( k ) x^{(k)} x(k) x ( k + 1 ) x^{(k+1)} x(k+1)可以共用一组存储空间。

若将系数矩阵 A A 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},\dots,a_{nn}) D=diag(a11,a22,,ann)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值