【NA】超松弛迭代法SOR

迭代基本策略.

  • 给定线性方程组 A x = b Ax=b Ax=b对其系数矩阵 A A A 做加性分解 A = I − B A=I-B A=IB 得到不动点方程组 x = B x + d   ,   d = b x=Bx+d~,~d=b x=Bx+d , d=b由此得到迭代公式 x ( k + 1 ) = B x ( k ) + d = x ( k ) + b − A x ( k ) x^{(k+1)}=Bx^{(k)}+d=x^{(k)}+b-Ax^{(k)} x(k+1)=Bx(k)+d=x(k)+bAx(k) r ( k ) = b − A x ( k ) r^{(k)}=b-Ax^{(k)} r(k)=bAx(k)代表着第 k k k 次迭代近似解 x ( k ) x^{(k)} x(k) 的偏差,因此上述迭代公式写为 x ( k + 1 ) = x ( k ) + r ( k ) (1) x^{(k+1)}=x^{(k)}+r^{(k)}\tag{1} x(k+1)=x(k)+r(k)(1)上式理解为每次迭代使用余量 r ( k ) r^{(k)} r(k) 来改进当前近似解 x ( k ) x^{(k)} x(k) 以得到下一次近似解 x ( k + 1 ) . x^{(k+1)}. x(k+1). 为了加快收敛速度,可以考虑对余量 r ( k ) r^{(k)} r(k) 乘上一个松弛因子 ω \omega ω 来加大其修正比重,这样做的目的是希望下一次近似解 x ( k + 1 ) x^{(k+1)} x(k+1) 更接近精确解 x ∗ x^* x,于是得到加速迭代公式 x ( k + 1 ) = x ( k ) + ω ⋅ r ( k ) (2) x^{(k+1)}=x^{(k)}+\omega·r^{(k)}\tag{2} x(k+1)=x(k)+ωr(k)(2)此时的加速公式对每一个余量分量乘以同一个数标量 ω \omega ω,考虑将其推广到更一般的形式 x ( k + 1 ) = x ( k ) + ω ⋅ P ⋅ r ( k ) (3) x^{(k+1)}=x^{(k)}+\omega·P·r^{(k)}\tag{3} x(k+1)=x(k)+ωPr(k)(3)此时该公式还采用同步迭代方式,可以看出取 ω = 1 , P = D − 1 \omega=1,P=D^{-1} ω=1,P=D1 时, ( 3 ) (3) (3) 式即为Jacobi迭代法。实际中更多的是采用异步迭代方式,即异步余量 r ( k ) = b − L x ( k + 1 ) − ( D + U ) x ( k ) r^{(k)}=b-Lx^{(k+1)}-(D+U)x^{(k)} r(k)=bLx(k+1)(D+U)x(k)此时迭代公式依旧形如 ( 3 ) (3) (3) 式,将异步余项代入得到 x ( k + 1 ) = x ( k ) + ω ⋅ P ⋅ ( b − L x ( k + 1 ) − ( D + U ) x ( k ) ) (4) x^{(k+1)}=x^{(k)}+\omega·P·\left(b-Lx^{(k+1)}-(D+U)x^{(k)}\right)\tag{4} x(k+1)=x(k)+ωP(bLx(k+1)(D+U)x(k))(4)不难看出,取 ω = 1 , P = D − 1 \omega=1,P=D^{-1} ω=1,P=D1 时, ( 4 ) (4) (4) 式即为Gauss-Seidel迭代法。若在 ( 4 ) (4) (4) 式中只固定 P = D − 1 P=D^{-1} P=D1,则得到逐次超松弛迭代法 x ( k + 1 ) = x ( k ) + ω ⋅ D − 1 ⋅ ( b − L x ( k + 1 ) − ( D + U ) x ( k ) ) (5) x^{(k+1)}=x^{(k)}+\omega·D^{-1}·\left(b-Lx^{(k+1)}-(D+U)x^{(k)}\right)\tag{5} x(k+1)=x(k)+ωD1(bLx(k+1)(D+U)x(k))(5)分量形式为 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 ) ) (6) x^{(k+1)}_i=x^{(k)}_i+\frac{\omega}{a_{ii}}\left(b_i-\sum^{i-1}_{j=1}a_{ij}x^{(k+1)}_j-\sum^n_{j=i}a_{ij}x^{(k)}_j\right)\tag{6} xi(k+1)=xi(k)+aiiω(bij=1i1aijxj(k+1)j=inaijxj(k))(6)
  • 逐次超松弛迭代法,英译Successive Over Relaxation Method,简称SOR法,当 ω > 1 \omega>1 ω>1 ( 5 ) (5) (5) 式称为超松弛法。SOR法是求解大型稀疏方程组的有效方法之一,并且我们可以发现,SOR、Jacobi、Gauss-Seidel迭代法实际可以做到代码共享。

SOR收敛性.

  • 将SOR迭代公式 ( 5 ) (5) (5) 改写为一般迭代式 x ( k + 1 ) = H x ( k ) + g x^{(k+1)}=Hx^{(k)}+g x(k+1)=Hx(k)+g 得到 x ( k + 1 ) = ( D + ω ⋅ L ) − 1 [ ( 1 − ω ) D − ω U ] ⋅ x ( k ) + ( D + ω ⋅ L ) − 1 ω ⋅ b (7) x^{(k+1)}=(D+\omega·L)^{-1}\left[(1-\omega)D-\omega U\right]·x^{(k)}+(D+\omega·L)^{-1}\omega·b\tag{7} x(k+1)=(D+ωL)1[(1ω)DωU]x(k)+(D+ωL)1ωb(7)其迭代矩阵 H = ( D + ω ⋅ L ) − 1 [ ( 1 − ω ) D − ω U ] = L ω H=(D+\omega·L)^{-1}\left[(1-\omega)D-\omega U\right]=L_{\omega} H=(D+ωL)1[(1ω)DωU]=Lω根据迭代法的收敛性中给出的迭代法收敛充要条件可知, ( 7 ) (7) (7) 式收敛的充要条件是 ρ ( L ω ) < 1 \rho(L_{\omega})<1 ρ(Lω)<1

SOR收敛必要条件.

  • 给定线性方程组 A x = b   ,   a i i ≠ 0   ,   i = 1 , 2 , . . . , n Ax=b~,~a_{ii}≠0~,~i=1,2,...,n Ax=b , aii=0 , i=1,2,...,n若SOR迭代法收敛,则必然有 0 < ω < 2 0<\omega<2 0<ω<2
  • 证明】因为SOR迭代法收敛,所以其迭代矩阵的谱半径 ρ ( L ω ) = m a x { λ i } < 1 \rho(L_{\omega})=max\{\lambda_i\}<1 ρ(Lω)=max{λi}<1,因此 ∣ d e t ( L ω ) ∣ = ∣ ∏ i = 1 n λ i ∣ ≤ [   ρ ( L ω )   ] n |det(L_{\omega})|=\left|\prod^n_{i=1}\lambda_i\right|≤[~\rho(L_{\omega})~]^n det(Lω)=i=1nλi[ ρ(Lω) ]n上述不等式两边同时开 n n n 次方根,得到 ∣ d e t ( L ω ) ∣ 1 n ≤ ρ ( L ω ) < 1 |det(L_{\omega})|^{\frac1n}≤\rho(L_{\omega})<1 det(Lω)n1ρ(Lω)<1因为 d e t ( L ω ) = d e t [ ( D + ω ⋅ L ) − 1 ] ⋅ d e t [ ( 1 − ω ) D − ω U ] (*) det(L_{\omega})=det[(D+\omega·L)^{-1}]·det[(1-\omega)D-\omega U]\tag{*} det(Lω)=det[(D+ωL)1]det[(1ω)DωU](*)分别考察矩阵 L , D , U L,D,U L,D,U 的形状: L = [ 0 0 ⋯ 0 a 21 0 ⋯ 0 ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ 0 ]    D = [ a 11 0 ⋯ 0 0 a 22 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ a n n ]    U = [ 0 a 12 ⋯ a 1 n 0 0 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 0 ] L=\left[ \begin{matrix} 0 & 0 & \cdots & 0 \\ a_{21}& 0 & \cdots & 0 \\ \vdots& \vdots& \ddots & \vdots\\a_{n1} & a_{n2} & \cdots&0 \end{matrix} \right]~~D=\left[ \begin{matrix} a_{11} & 0 & \cdots & 0 \\ 0& a_{22} & \cdots & 0 \\ \vdots& \vdots& \ddots & \vdots\\0 & 0 & \cdots&a_{nn} \end{matrix} \right]~~U=\left[ \begin{matrix} 0 & a_{12} & \cdots & a_{1n} \\ 0& 0 & \cdots & a_{2n} \\ \vdots& \vdots& \ddots & \vdots\\0 & 0 & \cdots&0 \end{matrix} \right] L=0a21an100an2000  D=a11000a22000ann  U=000a1200a1na2n0根据三角阵行列式等于其主对角线元素之积,得到 ( ∗ ) (*) () 式的结果如下: d e t ( L ω ) = ( ∏ i = 1 n a i i ) − 1 ( 1 − ω ) n ( ∏ i = 1 n a i i ) − 1 = ( 1 − ω ) n det(L_{\omega})=\left(\prod^n_{i=1}a_{ii}\right)^{-1}(1-\omega)^n\left(\prod^n_{i=1}a_{ii}\right)^{-1}=(1-\omega)^n det(Lω)=(i=1naii)1(1ω)n(i=1naii)1=(1ω)n因此 − 1 < ( 1 − ω ) n < 1 -1<(1-\omega)^n<1 1<(1ω)n<1 0 < ω < 2 0<\omega<2 0<ω<2
  • 上述定理的意义在于指明了松弛因子 ω \omega ω 的范围只有在 ( 0 , 2 ) (0,2) (0,2) 内SOR迭代法才可能收敛。

特殊矩阵.

  • 和在Jacobi迭代法、Gauss-Seidel迭代法中讨论的一样,SOR迭代法某种意义上作为前两种迭代法更一般化的方式,对于具有特殊结构的矩阵——正定阵、对角占优阵,在收敛性方面也会有所体现。
  • 回顾】系数矩阵是对角占优阵时,Jacobi迭代法、Gauss-Seidel迭代法都收敛。
  • 系数矩阵是正定阵时,Gauss-Seidel迭代法收敛。
  • 系数矩阵 A A A 以及矩阵 2 D − A 2D-A 2DA 都是正定阵时,Jacobi迭代法收敛。

正定阵.

  • 定理】系数矩阵 A A A 为正定阵,且松弛因子 0 < ω < 2 0<\omega<2 0<ω<2 时,SOR迭代法收敛。
  • 证明】欲证明SOR迭代法收敛,只需要证明迭代矩阵任意特征值的模 < 1 <1 <1 即可,设 λ \lambda λ 是迭代矩阵 L ω L_{\omega} Lω 的任一特征值,对应的特征向量为 y y y,有 λ y = L ω ⋅ y   ,   y = ( y 1 , y 2 , . . . , y n ) T ≠ 0 \lambda y=L_{\omega}·y~,~y=(y_1,y_2,...,y_n)^T≠0 λy=Lωy , y=(y1,y2,...,yn)T=0带入 L ω L_{\omega} Lω 的具体形式,得到 [ ( 1 − ω ) D − ω U ]   y = λ ( D + ω L )   y [(1-\omega)D-\omega U]~y=\lambda(D+\omega L)~y [(1ω)DωU] y=λ(D+ωL) y两边同时做内积 ( ● , y ) (●,y) (,y) 得到 ( [ ( 1 − ω ) D − ω U ]   y   ,   y ) = ( λ ( D + ω L )   y   ,   y ) \bigg([(1-\omega)D-\omega U]~y~,~y\bigg)=\bigg(\lambda(D+\omega L)~y~,~y\bigg) ([(1ω)DωU] y , y)=(λ(D+ωL) y , y)解得 λ = ( D y , y ) − ω ( D y , y ) − ω ( U y , y ) ( D y , y ) + ω ( L y , y ) (**) \lambda=\frac{(Dy,y)-\omega(Dy,y)-\omega(Uy,y)}{(Dy,y)+\omega(Ly,y)}\tag{**} λ=(Dy,y)+ω(Ly,y)(Dy,y)ω(Dy,y)ω(Uy,y)(**)因为系数矩阵 A A A 是正定阵,所以 a k k = D k D k − 1 > 0 a_{kk}=\frac{D_k}{D_{k-1}}>0 akk=Dk1Dk>0因此 ( D y , y ) = ∑ i = 1 n a i i ∣ y i ∣ 2 ≡ σ > 0 (Dy,y)=\sum^n_{i=1}a_{ii}|y_i|^2\equiv\sigma>0 (Dy,y)=i=1naiiyi2σ>0再考察矩阵 L , U L,U L,U 的结构,当 A A A 是正定阵时, L = U T L=U^T L=UT,因此 ( U y , y ) = y T U y = y T L T y = ( y , L y ) = ( L y , y ) ‾ (Uy,y)=y^TUy=y^TL^Ty=(y,Ly)=\overline{(Ly,y)} (Uy,y)=yTUy=yTLTy=(y,Ly)=(Ly,y) ( L y , y ) = a + b i = ( a , b ) (Ly,y)=a+bi=(a,b) (Ly,y)=a+bi=(a,b)那么 ( U y , y ) = ( a , − b ) (Uy,y)=(a,-b) (Uy,y)=(a,b)至此 ( ∗ ∗ ) (**) () 可以写为 λ = ( 1 − ω ) σ − ω ( a , − b ) σ + ω ( a , b ) = σ − ω σ − a ω + i b ω ( σ + a ⋅ ω ) + i b ω \lambda=\frac{(1-\omega)\sigma-\omega(a,-b)}{\sigma+\omega(a,b)}=\frac{\sigma-\omega\sigma-a\omega+ib\omega}{(\sigma+a·\omega)+ib\omega} λ=σ+ω(a,b)(1ω)σω(a,b)=(σ+aω)+ibωσωσaω+ibω λ \lambda λ 取模方得到 ∣ λ ∣ 2 = ( σ − ω σ − a ω ) 2 + b 2 ω 2 ( σ + a ⋅ ω ) 2 + b 2 ω 2 |\lambda|^2=\frac{(\sigma-\omega\sigma-a\omega)^2+b^2\omega^2}{(\sigma+a·\omega)^2+b^2\omega^2} λ2=(σ+aω)2+b2ω2(σωσaω)2+b2ω2分子分母做差得到 Δ = ( σ − ω σ − a ω ) 2 − ( σ + a ⋅ ω ) 2 = ( 2 σ − ω σ ) ( − ω σ − 2 a ω ) = σ ( ω − 2 ) ω ( σ + 2 a ) (8) \Delta=(\sigma-\omega\sigma-a\omega)^2-(\sigma+a·\omega)^2=(2\sigma-\omega\sigma)(-\omega\sigma-2a\omega)=\sigma(\omega-2)\omega(\sigma+2a)\tag{8} Δ=(σωσaω)2(σ+aω)2=(2σωσ)(ωσ2aω)=σ(ω2)ω(σ+2a)(8)根据 A A A 是正定矩阵,有 ( A y , y ) = [ ( L + D + U ) y , y ] = ( L y , y ) + ( D y , y ) + ( U y , y ) = σ + 2 a > 0 (Ay,y)=[(L+D+U)y,y]=(Ly,y)+(Dy,y)+(Uy,y)=\sigma+2a>0 (Ay,y)=[(L+D+U)y,y]=(Ly,y)+(Dy,y)+(Uy,y)=σ+2a>0再根据 0 < ω < 2 0<\omega<2 0<ω<2 可以判定 ( 8 ) (8) (8) 式的正负性 Δ < 0 \Delta<0 Δ<0 ∣ λ ∣ 2 < 1 |\lambda|^2<1 λ2<1 ∣ λ ∣ < 1 |\lambda|<1 λ<1 ρ ( L ω ) < 1 \rho(L_{\omega})<1 ρ(Lω)<1
  • 再次说明,当 ω = 1 \omega=1 ω=1 时,SOR迭代法退化为Gauss-Seidel迭代,因此上述证明也可以用于证明Gauss-Seidel迭代法对于系数矩阵是正定阵时收敛性证明。

对角占优阵.

  • 定理】系数矩阵 A A A 为按行严格对角占优阵,且松弛因子 0 < ω ≤ 1 0<\omega≤1 0<ω1 时,SOR迭代法收敛。
  • 不等式】对于 0 < ω ≤ 1 0<\omega≤1 0<ω1 ∣ λ ∣ ≥ 1 |\lambda|≥1 λ1,有下述不等式成立 ∣ λ − 1 + ω ∣ ≥ ∣ λ ∣ ω ≥ ω (9) |\lambda-1+\omega|≥|\lambda|\omega≥\omega\tag{9} λ1+ωλωω(9)
  • 证明】考虑 0 = d e t ( L ω ) = d e t [ ( D + ω L ) − 1 ] ⋅ d e t [ λ ( D + ω L ) − [ ( 1 − ω ) D − ω U ] ] 0=det(L_{\omega})=det[(D+\omega L)^{-1}]·det\bigg[\lambda(D+\omega L)-[(1-\omega)D-\omega U]\bigg] 0=det(Lω)=det[(D+ωL)1]det[λ(D+ωL)[(1ω)DωU]]因为 d e t [ ( D + ω L ) − 1 ] ≠ 0 det[(D+\omega L)^{-1}]≠0 det[(D+ωL)1]=0所以 d e t [ λ ( D + ω L ) − [ ( 1 − ω ) D − ω U ] ] = 0 det\bigg[\lambda(D+\omega L)-[(1-\omega)D-\omega U]\bigg]=0 det[λ(D+ωL)[(1ω)DωU]]=0因为 A A A 是按行严格对角占优矩阵,所以有 ∣ a i i ∣ > ∑ j ≠ i n ∣ a i j ∣ |a_{ii}|>\sum^n_{j\neq i}|a_{ij}| aii>j=inaij构造函数 f ( M , i ) = ∑ j ≠ i n ∣ m i j ∣ f(M,i)=\sum^n_{j\neq i}|m_{ij}| f(M,i)=j=inmij那么上述严格对角占优不等式可以写为 ∣ a i i ∣ > f ( A , i ) = f ( L , i ) + f ( U , i ) (10) |a_{ii}|>f(A,i)=f(L,i)+f(U,i)\tag{10} aii>f(A,i)=f(L,i)+f(U,i)(10)假定迭代矩阵 L ω L_{\omega} Lω 有一个特征值满足 ∣ λ ∣ > 1 |\lambda|>1 λ>1,那么有不等式 ( 9 ) (9) (9) 成立 ∣ λ − 1 + ω ∣ ≥ ∣ λ ∣ ω |\lambda-1+\omega|≥|\lambda|\omega λ1+ωλω在不等式 ( 10 ) (10) (10) 的左右两端分别乘以不等式 ( 9 ) (9) (9) 的左右两端,不等号方向不变 ∣ λ − 1 + ω ∣ ⋅ ∣ a i i ∣ > ( ∣ λ ∣ ⋅ ω ) ⋅ [ f ( L , i ) + f ( U , i ) ] > ∣ λ ∣ ⋅ ω ⋅ f ( L , i ) + ω ⋅ f ( U , i ) = f ( λ ω L , i ) + f ( ω U , i ) |\lambda-1+\omega|·|a_{ii}|>\bigg(|\lambda|·\omega\bigg)·\bigg[f(L,i)+f(U,i)\bigg]>|\lambda|·\omega·f(L,i)+\omega·f(U,i)=f\bigg(\lambda\omega L,i\bigg)+f\bigg(\omega U,i\bigg) λ1+ωaii>(λω)[f(L,i)+f(U,i)]>λωf(L,i)+ωf(U,i)=f(λωL,i)+f(ωU,i)将上述不等式最左端整理成下面的形式 f ( λ ω L , i ) + f ( ω U , i ) = f ( λ ω L + ω U , i ) = f ( ( λ − 1 + ω ) D + λ ω L + ω U , i ) f\bigg(\lambda\omega L,i\bigg)+f\bigg(\omega U,i\bigg)=f\bigg(\lambda\omega L+\omega U,i\bigg)=f\bigg((\lambda-1+\omega)D+\lambda\omega L+\omega U,i\bigg) f(λωL,i)+f(ωU,i)=f(λωL+ωU,i)=f((λ1+ω)D+λωL+ωU,i)于是我们得到下面的不等式 ∣ λ − 1 + ω ∣ ⋅ ∣ a i i ∣ > f ( ( λ − 1 + ω ) D + λ ω L + ω U , i ) (11) |\lambda-1+\omega|·|a_{ii}|>f\bigg((\lambda-1+\omega)D+\lambda\omega L+\omega U,i\bigg)\tag{11} λ1+ωaii>f((λ1+ω)D+λωL+ωU,i)(11)不等式 ( 11 ) (11) (11) 说明矩阵 ( λ − 1 + ω ) D + λ ω L + ω U (\lambda-1+\omega)D+\lambda\omega L+\omega U (λ1+ω)D+λωL+ωU 是按行严格对角占优矩阵,所以不可能满足 d e t [ λ ( D + ω L ) − [ ( 1 − ω ) D − ω U ] ] = 0 det\bigg[\lambda(D+\omega L)-[(1-\omega)D-\omega U]\bigg]=0 det[λ(D+ωL)[(1ω)DωU]]=0矛盾出现,因此迭代矩阵 L ω L_{\omega} Lω 的所有特征值模都小于1,从而有 ρ ( L ω ) < 1 \rho(L_{\omega})<1 ρ(Lω)<1SOR迭代法在此情况下收敛。

  • 补充说明】关于不等式 ( 9 ) (9) (9),分 λ = 1 , λ < − 1 , λ > 1 \lambda=1,\lambda<-1,\lambda>1 λ=1,λ<1,λ>1 三种情况,很容易验证其正确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值