鬆弛因子對SOR法收斂速度的影響之C 實現

2021-05-27 01:22:30 字數 2053 閱讀 7486

一、問題描述

用sor法求解方程組ax=b, 其中

要求程式中不存係數矩陣a,分別對不同的階數取w=1.1, 1.2, ...,1.9進行迭代,記錄近似解x(k)達到||x(k)-x(k-1)||<10-6時所用的迭代次數k,觀察鬆弛因子對收斂速度的影響,並觀察當w <= 0或 w>=2會有什麼影響?

二、計算結果與分析

(1) 在收斂標準||x(k)-x(k-1)||-6且最大迭代次數200前提下,分別取階數n=5、20、35、50、65、80,取w=1.1, 1.2, ...,1.9進行sor法迭代求解,計算結果見圖1:

圖1不同階數下鬆弛因子w對收斂速度的影響(w=1.1, 1.2, ...,1.9)

從圖1的計算結果可以看出,在w=1.1, 1.2, ...,1.9範圍內,不同階數時sor法的收斂速度均隨收斂鬆弛因子w的增加而減慢,但在該引數條件下sor法均能達到收斂要求。

(2) 為觀察w£0或w³2時w對收斂速度的影響,在收斂標準||x(k)-x(k-1)||-6且最大迭代次數250前提下,分別取階數n=5、20、35、50、65、80,分別取w=-0.5, -0.4, ...,0和w=2, 2.1, ...,2.5進行sor法迭代求解,計算結果見圖5、圖6:

圖2  不同階數下鬆弛因子w對收斂速度的影響(w=-0.5, -0.4, ...,0)

圖3  不同階數下鬆弛因子w對收斂速度的影響(w=2, 2.1, ...,2.5)

從圖2和圖3可看出,當鬆弛因子w£0或w³2時,不同階數下sor法均迭代到了最大收斂次數,這實際上意味著該引數條件下sor法是發散的(w=0時迭代次數為1是因為此時實際上迭代公式的殘量為0,迭代無意義)。

圖4給出了在w<0和w>2時sor法求解的兩個特例,顯然,迭代到250次時解已趨於無限,這正式迭代發散的表現。

圖4  w<0和w>2時sor法求解的兩個特例

綜上所述,對於題目給出的線性方程組來說,當鬆弛因子w=1.1, 1.2, ...,1.9時,sor法迭代求解是收斂的,而當w£0或w³2時sor法是發散的。這實際上與教材中的定理很好的符合,即0三、源**

#include "stdafx.h"

#include #includeusing namespace std;

#include int sor(int n,double w,double e=1e-6,int maxstep=100,int displaytype=0)

//sor法求解題3子函式,n:階數,w:鬆弛因子,e:收斂閾值,maxstep:最大收斂步數,返回值為收斂步驟數,displaytype:是否顯示計算結果,0:不顯示,非零:顯示

///第n行計算

s=px[n-1];

t=px[n-2]-4*px[n-1];

px[n-1]=(-3-t)*w/(-4)+s;

delta+=(px[n-1]-s)*(px[n-1]-s); //(px[n-1]-s)>=0?(px[n-1]-s):(-px[n-1]+s);

delta=(double) sqrt((double)delta);

m+=1;//跌代次數加1

}while((delta>e)&&(me)&&(m>=maxstep))cout<=maxstep))return -m;

return m;

}int _tmain(int argc, _tchar* argv)

{ int n=5; //階數

double w=1.5;//鬆弛因子

double e=1e-6;//收斂閾值

int maxstep=250;//最大收斂步數

不同階數 w=1.1--1.9範圍時w對收斂步數的影響///

for (n=5;n<85;n+=15)

{cout<2時w對收斂步數的影響

//w<=0

cout<=2

for (n=5;n<85;n+=15)

{cout<

鬆弛因子對SOR法收斂速度的影響之C 實現

一 問題描述 用sor法求解方程組ax b,其中 要求程式中不存係數矩陣a,分別對不同的階數取w 1.1,1.2,1.9進行迭代,記錄近似解x k 達到 x k x k 1 10 6時所用的迭代次數k,觀察鬆弛因子對收斂速度的影響,並觀察當w 0或 w 2會有什麼影響?二 計算結果與分析 1 在收斂...

逐次超鬆弛迭代法SOR

sor 逐次超鬆弛迭代法 本函式只能求解當a為n n的矩陣 2010 10 21 function x sor a,b,w tic if nargin 2 w 1.23 預設鬆弛因子w 1.23 endif w 0 error matlab sor argument w should be larg...

求解最佳鬆弛因子

本函式用於計算n n方陣的最佳鬆弛因子 本函式只能求解當a為n n的矩陣 用步長為0.01掃瞄w的取值區間0 2 2010 10 23 function bw,brho bsor a n max size a d zeros n,n l zeros n,n u zeros n,n 初始化三個矩陣 r...