计算方法--解线性方程组的迭代法

雅可比迭代法(Jacobi)

对于方程组 A x = b \mathbf{Ax=b} Ax=b

将线性方程组的矩阵A分解为
A = L + D + U A = L+D+U A=L+D+U
其中
L = ( 0 0 ⋯ 0 0 a 21 0 ⋯ 0 0 a 31 a 32 ⋯ 0 0 ⋮ ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n , n − 1 0 ) \boldsymbol{L}=\left(\begin{array}{ccccc} 0 & 0 & \cdots & 0 & 0 \\ a_{21} & 0 & \cdots & 0 & 0 \\ a_{31} & a_{32} & \cdots & 0 & 0 \\ \vdots & \vdots & & \vdots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n, n-1} & 0 \end{array}\right) L=0a21a31an100a32an2000an,n10000
D = ( a 11 0 0 ⋯ 0 0 a 22 0 ⋯ 0 0 0 a 33 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ a n n ) \boldsymbol{D}=\left(\begin{array}{ccccc} a_{11} & 0 & 0 & \cdots &0 \\ 0 & a_{22} & 0 & \cdots & 0 \\ 0 & 0 & a_{33} & \cdots & 0 \\ \vdots & \vdots & \vdots &\ddots & \vdots \\ 0 & 0 & 0 & \cdots & a_{nn} \end{array}\right) D=a110000a220000a330000ann
U = ( 0 a 12 a 13 ⋯ a 1 n 0 0 a 23 ⋯ a 2 n ⋮ ⋮ ⋮ ⋮ 0 0 0 ⋯ a n − 1 , n 0 0 0 ⋯ 0 ) \boldsymbol{U}=\left(\begin{array}{ccccc} 0 & a_{12} & a_{13} & \cdots & a_{1 n} \\ 0 & 0 & a_{23} & \cdots & a_{2 n} \\ \vdots & \vdots & \vdots & & \vdots \\ 0 & 0 & 0 & \cdots & a_{n-1, n} \\ 0 & 0 & 0 & \cdots & 0 \end{array}\right) U=0000a12000a13a2300a1na2nan1,n0

迭代公式的矩阵形式

x k + 1 = B J X k + f J \mathbf {x^{k+1} = B_JX^k+f_J} xk+1=BJXk+fJ
根据如上形式的分解,得:
B J = I − D − 1 A f J = D − 1 b \mathbf{B_J = I - D^{-1}A}\\ \quad\\ \mathbf{f_J = D^{-1}b} BJ=ID1AfJ=D1b

x k + 1 = ( I − D − 1 A ) X k + D − 1 b \mathbf {x^{k+1} = (I - D^{-1}A)X^k+D^{-1}b} xk+1=(ID1A)Xk+D1b

编程计算公式:

x i ( k + 1 ) = 1 a i i ( b i − ∑ j = 1 , j ≠ i n a i j x j ( k ) ) , i = 1 , 2 , ⋯   , n x_{i}^{(k+1)}=\frac{1}{a_{i i}}\left(b_{i}-\sum_{j=1, j \neq i}^{n} a_{i j} x_{j}^{(k)}\right), \quad i=1,2, \cdots, n xi(k+1)=aii1bij=1,j=inaijxj(k),i=1,2,,n

迭代思路:

将第 i i i个方程中的 x i x_i xi提出来,作为 x i x_i xi的迭代式。例如:
a 3 x 3 = b − ( a 1 x 1 + a 2 x 2 + a 4 x 4 + . . . ) a_3x_3 =b - (a_1x_1+a_2x_2+a_4x_4+...) a3x3=b(a1x1+a2x2+a4x4+...)

高斯-赛德尔迭代法(Gauss-Seidel)

从直观上看,在收敛的前提下,新的分量 x 1 k + 1 , x 2 k + 1 , x 3 k + 1 , . . . , x n k + 1 x_1^{k+1},x_2^{k+1},x_3^{k+1},...,x_n^{k+1} x1k+1,x2k+1,x3k+1,...,xnk+1会更好,更精确。根据此思路,有:
X ( k + 1 ) = − ( D + L ) − 1 U X ( k ) + ( D + L ) − 1 b \boldsymbol{X}^{(k+1)}=-(\boldsymbol{D}+\boldsymbol{L})^{-1} \boldsymbol{U} \boldsymbol{X}^{(k)}+(\boldsymbol{D}+\boldsymbol{L})^{-1} \boldsymbol{b} X(k+1)=(D+L)1UX(k)+(D+L)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 ) ) , i = 1 , 2 , ⋯   , n x_{i}^{(k+1)}=\frac{1}{a_{i i}}\left(b_{i}-\sum_{j=1}^{i-1} a_{i j} x_{j}^{(k+1)}-\sum_{j=i+1}^{n} a_{i j} x_{j}^{(k)}\right), \quad i=1,2, \cdots, n xi(k+1)=aii1(bij=1i1aijxj(k+1)j=i+1naijxj(k)),i=1,2,,n


无论是雅可比迭代法还是高斯-赛德尔迭代法,只有在迭代法收敛的条件下才能进行迭代运算。下面介绍判定迭代法收敛的方法。

迭代法的收敛性

迭代法收敛性基本定义

x = B x + f \mathbf{x = Bx+f} x=Bx+f 迭代法收敛的充分必要条件 谱 半 径 ρ ( B ) < 1 谱半径\rho(\mathbf B)<1 ρ(B)<1
初始向量的选取和右端向量 无关

相关定理指出,当雅可比矩阵 B J = I − D − 1 A \mathbf{B_J = I - D^{-1}A} BJ=ID1A为非负矩阵,雅可比迭代法高斯-赛德尔迭代法同时收敛或发散。

收敛速度

R ( B ) = − l n ( ρ ( B ) ) R(B) = -ln(\rho(B)) R(B)=ln(ρ(B))
为迭代法的收敛速度。


一般,当n较大时,迭代矩阵B的特征值计算较为复杂,迭代法收敛性基本定义条件较难验证,因此可利用定理结论 ρ ( b ) ≤ ∣ ∣ B ∣ ∣ \rho(b) \le||B|| ρ(b)B作为 ρ ( B ) \rho(B) ρ(B)上界的一种估计。
于是得如下定理

迭代法充分条件1

∣ ∣ B ∣ ∣ < 1 ||B||<1 B<1则迭代公式 x = B x + f x = Bx+f x=Bx+f收敛
注:是充分条件,不是必要条件

在实际计算中可将 ∣ ∣ X ( k ) − X ( k − 1 ) ∣ ∣ ∞ < ε ||X^{(k)}-X^{(k-1)}||_{\infty} < \varepsilon X(k)X(k1)<ε作为终止条件。

迭代法充分条件2

A x = b Ax=b Ax=b的系数矩阵 A A A严格对角占优矩阵不可约对角占优矩阵,则雅可比迭代法高斯-赛德尔迭代法收敛。

迭代法其他收敛条件

  • A x = b Ax=b Ax=b的系数矩阵 A A A对称正定,则高斯-赛德尔迭代法收敛。
  • A A A对称正定, 2 D − A 2D-A 2DA也对称正定(D为A的对角元组成的对角阵),则雅可比迭代法收敛。
  • A A A对称正定, 2 D − A 2D-A 2DA非正定,则雅可比迭代法 不收敛

逐次超松弛迭代是一种加速迭代的技术,下面以Jacobi迭代法来阐述这种收敛技术。

JOR迭代法


x k + 1 = ( I − D − 1 A ) X k + D − 1 b \mathbf {x^{k+1} = (I - D^{-1}A)X^k+D^{-1}b} xk+1=(ID1A)Xk+D1b
加入松弛因子 ω \omega ω ,得:

x k + 1 = ( I − ω D − 1 A ) X k + ω D − 1 b \mathbf {x^{k+1} = (I - \omega D^{-1}A)X^k+\omega D^{-1}b} xk+1=(IωD1A)Xk+ωD1b
其分量形式为:
x i ( k + 1 ) = x i ( k ) + ω a i i ( b i − ∑ j = 1 n a i j x j ( k ) ) , i = 1 , 2 , ⋯   , n x_{i}^{(k+1)}=x_{i}^{(k)}+\frac{\omega}{a_{i i}}\left(b_{i}-\sum_{j=1}^{n} a_{i j} x_{j}^{(k)}\right), \quad i=1,2, \cdots, n xi(k+1)=xi(k)+aiiω(bij=1naijxj(k)),i=1,2,,n

当 Jacobi 迭代方法

  1. 迭代矩阵 B J \boldsymbol{B}_{J} BJ 的特征值为实数
  2. B J \boldsymbol{B}_{J} BJ 的谱半径 ρ ( B J ) < 1 \rho\left(\boldsymbol{B}_{J}\right)<1 ρ(BJ)<1

JOR 迭代方法有最佳松弛因子为
ω o p t = 2 2 − λ max ⁡ B J − λ min ⁡ B J \omega_{\mathrm{opt}}=\frac{2}{2-\lambda_{\max }^{B_{J}}-\lambda_{\min }^{B_{J}}} ωopt=2λmaxBJλminBJ2

JOB收敛准则

Jacobi迭代法收敛,则松弛因子 ω ∈ [ 0 , 1 ) \omega \in [0,1) ω[0,1)JOB迭代法也收敛。

SOR迭代法

以下, 我们将 Gauss-Seidel 迭代法改造为一类 逐次超松弛 迭代格式.
Gauss-Seidel 迭代法
X ( k + 1 ) = − ( D + L ) − 1 U X ( k ) + ( D + L ) − 1 b \boldsymbol{X}^{(k+1)}=-(\boldsymbol{D}+\boldsymbol{L})^{-1} \boldsymbol{U} \boldsymbol{X}^{(k)}+(\boldsymbol{D}+\boldsymbol{L})^{-1} \boldsymbol{b} X(k+1)=(D+L)1UX(k)+(D+L)1b
转化为如下形式
D X ( k + 1 ) = D X ( k ) + [ b − L X ( k + 1 ) − ( D + U ) X ( k ) ] \boldsymbol{D} \boldsymbol{X}^{(k+1)}=\boldsymbol{D} \boldsymbol{X}^{(k)}+\left[\boldsymbol{b}-\boldsymbol{L} \boldsymbol{X}^{(k+1)}-(\boldsymbol{D}+\boldsymbol{U}) \boldsymbol{X}^{(k)}\right] DX(k+1)=DX(k)+[bLX(k+1)(D+U)X(k)]

今在上式右端引人松弛因子 ω > 0 \omega>0 ω>0 , 化简后得 :
X ( k + 1 ) = ( D + ω L ) − 1 { [ ( 1 − ω ) D − ω U ] X ( k ) + ω b } \boldsymbol{X}^{(k+1)}=(\boldsymbol{D}+\omega \boldsymbol{L})^{-1}\left\{[(1-\omega) \boldsymbol{D}-\omega \boldsymbol{U}] \boldsymbol{X}^{(k)}+\omega \boldsymbol{b}\right\} X(k+1)=(D+ωL)1{[(1ω)DωU]X(k)+ωb}

其分量形式为:
x i ( k + 1 ) = x i ( k ) + ω a i i ( b i − ∑ j = 1 i − 1 a i j x j ( k + 1 ) − ∑ j = i n a i j x j ( k ) ) , i = 1 , 2 , ⋯   , n x_{i}^{(k+1)}=x_{i}^{(k)}+\frac{\omega}{a_{i i}}\left(b_{i}-\sum_{j=1}^{i-1} a_{i j} x_{j}^{(k+1)}-\sum_{j=i}^{n} a_{i j} x_{j}^{(k)}\right) ,i=1,2, \cdots, n xi(k+1)=xi(k)+aiiω(bij=1i1aijxj(k+1)j=inaijxj(k))i=1,2,,n
SOR 迭代方法有最佳松弛因子为
ω o p t = 2 1 + 1 − ρ 2 [ − D − 1 ( L + U ) ] \omega_{\mathrm{opt}}=\frac{2}{1+\sqrt{1-\rho^{2}\left[-D^{-1}(L+U)\right]}} ωopt=1+1ρ2[D1(L+U)] 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elsa的迷弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值