第六章第三节逐次超松弛迭代法
SOR迭代法

SOR迭代法常以这种形式进行计算。
格式(3.4)的矩阵形式为
X (k1) (1 ) X k D1 b LX k UX (k) ,
3.5
其中
a11
D
a22
O
0
0
,
ann
0 a12 L
U
0O
O
0
a1n
an1,n
0
显然,A D L U.
0
0
L
a21
O
OO
上述定理说明,对于任何系数矩阵 A,若要 SOR
法收敛,必须选取松弛因子 0,2 , 然而,当松
弛因子满足条件 0 2 时,并不是对所有系数矩 阵 A 来说,SOR 法都是收敛的。但是,对一些特殊矩 阵来说,这一条件是充分的。
定理7 如果矩阵 A 是对称正定的,则 SOR 法 对于0 2 是收敛的。
ω
0.6 0.8 1 1.1 1.15 1.25 1.3 1.5 1.8
迭代次数 16 10 8 7 8 11 15 15 15
近似解与 5 5 5 5 5 5 5 4 1 准确解重 复合位数
使 SOR 法收敛最快的松弛因子通常称为最 优 松
弛因子。目前,只有少数特殊类型的矩阵,才有确定 的最优松弛因子的理论公式,但实际使用时也有一定 困难。通常的办法,是选不同的 进行试算,以确定
其 Gauss Seidel 迭 代 格 式 可写为 (aii 0) :
x(k1) i
x(k) i
1 aii
bi
a x(k1) i1 1
L
a x(k1) i,i1, i1
aii xi(k)
L
ain xn(k)
x(k) i
松弛迭代法

令B (D L)1[(1 )D U ], g (D L)1b,则
x(m1) B x(m) g (m 0,1,2,)
三、松弛法算法
输入 方程组的阶数n, A的元素aij,1 i, j n;b的分量bi ,1 i n;
x(0)的分量x0i ,1 i n;允许误差;最大迭次次数N. 输出 近似解x1, x2,, xn或N次迭代后不收敛的信息 . 步骤
S1 对m 1,2,, N作 S11~S13
S11 对i 1,2,, n
置xi
(1 )x0i
bi
i 1
aij x j
n
aij x0 j
aii .
j 1
j i 1
S12 若对i 1,2,, n, xi x0i ,则输出x1, x2,, xn ;停机.
在修正量前乘上一个参数,即
x ( m 1) i
xi( m )
r (m1) i
(i 1,2,, n)
这种求方程组近似解的方法称为松弛法,称为松弛因子. 当 1时,称为低松弛法,当 1时,就是赛德尔迭代法, 当 1时,称为超松弛法,简称为SOR.
在实际计算中,松弛法常采用以下形式:
§4-3 松弛迭代法
一、松弛迭代计算公式
赛德尔迭代法的迭代公式可表示为
x(m1) i
1 aii
(bi
i 1
a x(m1) ij j
j 1
n
aij
x(m) j
)
j i 1
x(m) i
1 aii
第六章 迭代法-数值分析

由极限存在准则得 即
k
lim xi( k ) xi =0
k
(i 1, 2, , n)
, n)
lim xi( k ) xi
(i 1, 2,
定义:设{ A( k ) }为n阶方阵序列,A为n阶方阵,如果 lim A( k ) A 0
k
其中 为矩阵范数,则称序列{ A( k ) }收敛于矩阵A,记为 lim A( k ) A
g
n
其中bij
aij aii
, (i j , i, j 1, 2,
, n), g i
bi (i 1, 2, aii
, n).
迭代公式x ( k 1) Bx ( k ) g (k 0,1, 2, )用方程组表示为
(k ) (k ) (k ) ( k 1) b13 x 3 b1n x n g x b 1 12 x 2 1 (k ) (k ) (k ) ( k 1) b 23 x 3 b 2 n x n g x2 b 21 x 1 2 ( k 1) (k ) (k ) (k ) b n1 x1 b n 2 x 2 b n,n 1 x n 1 g x n n 因此,在Jacobi迭代法的计算过程中,需同时保留两个
k k
即x是方程组Ax b的解。
引入误差向量
k
(k ) (k ) lim x x lim 0 所以 等价于 k
( k 1)
x
( k 1)
x
由
x ( k 1) Mx ( k ) g
x Mx g
则可得
( k 1)
超松弛迭代法及其松弛因子的选取

2013届学士学位毕业论文超松弛迭代法及其松弛因子的选取学号:09404307姓名:程启远班级:信息0901指导教师:崔艳星专业:信息与计算科学系别:数学系完成时间:2013年5月学生诚信承诺书本人郑重声明:所呈交的论文《超松弛迭代中松弛因子的选取方法》是我个人在导师崔艳星指导下进行的研究工作及取得的研究成果.尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得长治学院或其他教育机构的学位或证书所使用过的材料.所有合作者对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意.签名:日期:论文使用授权说明本人完全了解长治学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文.签名:日期:指导教师声明书本人声明:该学位论文是本人指导学生完成的研究成果,已经审阅过论文的全部内容,并能够保证题目、关键词、摘要部分中英文内容的一致性和准确性.指导教师签名:时间摘要本文首先给出了超松弛迭代法解线性方程组的基本概念,引进了关于超松弛迭代法收敛性判别的一些定理.再基于超松弛迭代法收敛性快慢与松弛因子的选择密切相关,本文给出了能准确快速地确定最优松弛因子的方法逐步搜索法和黄金分割法,并且写出了其Matlab 程序(附录),最后通过实例验证了方法的准确性,快速性.关键词线性方程组;超松弛迭代;Matlab程序;松弛因子AbstractThis paper firstly introduces the basic concept of the super relaxation iteration method for solving linear equations, introduced on some criterion theorem Overrelaxation iterative convergence, gives a simple Matlab program super relaxation iteration (Appendix 1). Then Overrelaxation iterative convergence speed and relaxation factor is selected based on the close relation is proposed in this paper, the rapid and accurate method of determining the optimal relaxation factor of the direct search method and the golden section method, and write the Matlab program (Appendix 2), finally the method is accurate, rapid.Key word:Linear equations; Successive Over Relaxation; Matlab program; relaxation factor超松弛迭代法及其松弛因子的选取09404307 程启远信息与计算科学指导教师崔艳星引言在科学计算和工程设计中,经常会遇到求解线性代数方程组的问题,而怎样快速的求解一直是我们共同关心的课题.随着计算机技术及数学编程软件的发展,我们有了在计算机上解线性方程组的条件.最初遇到的方程数和未知数比较少的方程组我们就是利用线性代数知识直接解出来.直接解法只能适用于经过有限步运算能求得解的方程组.后来遇到的方程数和未知数都比较多的方程组,特别是经常会遇到的大型的方程组,直接解法工作量太大,花费时间太多,因此迭代法发展了起来.从最初的Jacobi迭代法到Gauss-Seidel迭代法,很多学者一直在研究找到一种迭代法能更加快速,简单的解决线性方程组.通过不断的实验和计算,在Gauss-Seidel迭代法基础上,人们发现通过迭代-松弛—再迭代的方法,能更加减少计算步骤,极大的缩短计算时间,在此基础上,超松弛迭代法被学者们研究出来.通过比较三种迭代方法,我们得到超松弛迭代的收敛速度是最快的,而且超松弛迭代法具有计算公式简单,编制程序容易等突出优点.在求解大型稀疏线性方程组中超松弛迭代法得到广泛应用.而SOR 迭代方法中松弛因子ω的取值直接影响到算法的收敛性及收敛速度,是应用超松弛迭代法的关键.选择得当,可以加快收敛速度,甚至可以使发散的迭代变成收敛.因此, 超松弛因子的选取是学者们又一个研究目标.通过一些被验证的定理,我们知道为了保证迭代过程的收敛,必须要求1<ω<2,而且松弛因子和迭代矩阵谱半径之间有着密切的联系,现今学者们已经研究出部分特殊矩阵的最优松弛因子的计算公式.对于一般的矩阵,我们也可以从松弛因子和谱半径的关系着手研究最优松弛因子的选取,这就为本篇论文的形成提供了行文思路.本文给出了求超松弛迭代最优松弛因子的两种方法.1.超松弛迭代基本知识1.1 超松弛迭代法定义[1]超松弛(Successive Over Relaxation)迭代法,简称SOR 迭代法,它是在Gauss-Seidel 法基础上为提高收敛速度,采用加权平均而得到的新算法.设解方程组的Gauss-Seidel 法记为1(1)(1)()111(),1,2,,i nk k k ii ij j ij j j j i ii x b a x a x i na -++==+=--=∑∑ (1)再由()k ix 与(1)k ix +加权平均得(1)(1)(1)()()()(1)(),1,2,,k k k k k k i i i ii x x xx x x i n ωωω+++=-+=+-=这里ω>0称为松弛参数,将(1)代入则得1(1)()(1)()11(1)(),1,2,,i nk k k k iii ij jijjj j i iix x b a x a xi na ωω-++==+=-+--=∑∑ (2)称为SOR 迭代法,ω>0称为松弛因子,当ω=1时(2)即为Gauss-Seidel 法,将(2)写成矩阵形式,则得(1)()(1)()(1)()k k k k Dx Dx b Lx Ux ωω++=-+++于是得SOR 迭代的矩阵表示[3](1)()k k i x G x f ωω+=+ (3)其中1()[(1)]G D L D U ωωωω-=--+1()f D L b ωωω-=-1.2 收敛性判别条件 根据迭代法收敛性定理[2],SOR 法收敛的充分必要条件为()1G ωρ<,但要计算()G ωρ比较复杂,通常都不用此结论,而直接根据方程组的系数矩阵A 判断SOR 迭代收敛性,下面先给出收敛必要条件. 定理1]4[ 设(),0(1,2,...,)n nij ii A a Ra i n ⨯=∈≠=,则解方程Ax b =的SOR 迭代法收敛的必要条件是0<ω<2. 定理2]5[ 若n nA R ⨯∈对称正定,且0<ω<2,则解Ax=b 的SOR 迭代法(3)对nx R ∀∈迭代收敛.对于SOR 迭代法,松弛因子的选择对收敛速度影响较大,关于最优松弛因子研究较为复杂,且已有不少理论结果.下面只给出一种简单且便于使用的结论. 1.3 收敛速度的估计SOR 迭代法的迭代矩阵G ω与ω有关,当选取不同的ω时,其迭代速度也有所不同.因此,需要找到最优的松弛因子b ω,使对应b ω的SOR 方法收敛最快. 定理3]7[ 设n A Rn ⨯∈,如果存在排列矩阵P ,使1122T D M PAP M D =其中,1D ,2D 为对角矩阵,则称A 是2-循环的.此外,若当0α≠时,矩阵11-1D U D L αα--+的特征值都和α无关,则称A 是相容次序矩阵.定理4]7[ 设n A Rn⨯∈,A 有非零的对角元,且是2-循环和相容次序的矩阵.又设1(U)J B D L -=+是方程组A x b =的Jacobi 法迭代的迭代矩阵,且2B 的所有特征值均在(0,1)上,若()1J B ρ<,记()J B μρ=,则SOR 法的最优松弛因子b ω为211b ωμ=+-且222[4(1)]()1,2bb G ωωμωμωωωρωωω⎧+--⎪<<=⎪-<<⎩02()min ()bb G G ωωωρρ≤≤=图12 松弛因子选取方法方法思想]8[:(1)给出ω的范围,当取不同的ω值时,进行迭代,在符合同一个精度要求下依次求出谱半径的值,比较出最小的谱半径,那么这个最小的谱半径所对应的的ω,即为所求最佳松弛因子.(2)给出ω的范围,当取不同的ω值时,进行迭代,看它们在相同精度范围内的迭代次数,找到迭代次数最少的那一个,其所对应的ω即为最佳松弛因子.” 2.1 逐步搜索法 算法:Step 1:读入线性方程组的系数矩阵,常数向量,初值,精度,给出ω的取值范围,以及其变化步长;Step 2:按照如下公式迭代(1)()k k i x G x f ωω+=+找出符合精度要求ε的迭代次数及谱半径;Step 3:循环迭代,最后找到最优松弛因子Step 4: 改变ω的取值范围,重新设定变化步长,重复Step2. 2.2 黄金分割法从定理4我们可以看到,最优松弛因子对应的谱半径最小,而黄金分割法对于数值求解单调函数的极小和极大值是非常方便和有效的]9[,因此,我们可以把黄金分割法应用在求最优松弛因子上,其算法与主要思想是: Step1:利用优选法思想,在)2,1(之间选取四个点,12441314141,0.618(),0.618(),2p p p p p p p p p p ==--=+-=Step 2: 分别取2p 与3p 作为松弛因子代入迭代程序,比较出最少的迭代次数,如果对2p 应的迭代次数少,则选取),(31p p 作为收敛区间,如果是对应的3p 迭代次数少,则选取),(42p p 作为收敛区间.Step 3: 在所选取的收敛区间里循环进行上述的两个步骤,直到选取出满足精度要求且2p ,3p 所对应的迭代次数差不超过某个数∆时选3p 为最优松弛因子.3 数值算例例1: 矩阵3101130000311013A -⎡⎤⎢⎥-⎢⎥=⎢⎥-⎢⎥-⎣⎦(1,2,2,1)T b =----,精度为161.0*10k k x x ---≤解法1:黄金分割法令05.0=∆,程序结果如下:由上可以看出我们只需作几次0.618法就可以找到最优松弛因子,本例中最优松弛因子0901.1=ω,迭代次数为8次.解法2:逐步搜索法,步长为0.1,21<≤ω程序结果如下:图3图3中,其横坐标表示松弛因子,纵坐标表示谱半径.也可以求出最优松弛因子为1.1,迭代次数为8.然后我们改变松弛因子区间,令1.11≤≤ω以步长为0.01来继续求更精确的松弛因子.程序结果如下:图4图4中,其横坐标表示松弛因子,纵坐标表示谱半径.这样继续缩小松弛因子范围,以更小的步长求得的最优松弛因子为1.0900,更加精确. 例2 方程组A x b =,⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=40001-1-1-0004001-01-1-0004001-1-01-0004001-1-1-1-1-00400001-01-00400001-1-1-0040001-01-00040001-1-00004A T (2,2,0,2,2,1,1,1,1)b =.精度为161.0*10k k x x ---≤.初始迭代值为0(0,0,0,0,0,0,0,0,0)T x =.求最优松弛因子.解法1 黄金分割法令001.0=∆,程序结果如下:求得最优松弛因子为1.1772.解法2 逐步搜索法首先以21<≤ω,步长为0.1搜索求得的最优松弛因子为1.2000,然后重新设定范围,以步长为0.01运行程序在改变范围,以步长为0.001运行,程序结果如下:求得的最优松弛因子为1.1780.由这两个例子可以看出利用黄金分割法求最优松弛因子比用逐步搜索法更加简便快速,但是用逐步搜索法步长取的很小时求得的松弛因子比黄金分割法更加精确.4 结束语超松弛迭代方法是解决线性方程组的一个十分有效快捷的方法,很多工程学,计算数学中都会应用.而且超松弛迭代法公式简单,编制程序容易.而使用超松弛迭代法的关键在于选取合适的松弛因子,如果松弛因子选取合适,则会大大缩短计算时间. 本文依据松弛因子和矩阵谱半径的关系给出了两种选取松弛因子的方法逐步搜索法和黄金分割法及其Matlab程序. 但这两种方法仍不是足够简便,有所不足,有待进一步研究.5 参考文献:[1] 李庆扬,王能超,易大义.数值分析[M], 清华大学出版社,2008.[2] 施吉林. 计算机数值方法[M] . 北京: 高等教育出版社, 2000.[3] 蔡大用.数值分析与实验学习指导[M],清华大学出版社,2001.[4] 李建宇,黎燕. 牛顿一SOR迭代方法中最佳松弛因子的算法[J],四川大学学报,4,381-382,1995.[5] 王诗然. 稀疏线性方程组求解的逐次超松弛迭代法[J],沈阳师范大学学报,4,407-409,2006.[6] 刘卫国. MATLAB程序设计与应用[M],高等教育出版社,2008.[7] 张知难.关于相容次序矩阵的性质的图论证明[J].新疆大学学报, 1983, 12(3):23-26.[8] 李春光,徐成贤.确定SOR最优松弛因子的一个实用算法[J].计算力学学报,2002,19(3):299-302.[9] 蒋家羚,王勇.最有超松弛因子的一种确定方法及其在裂纹计算中的应用[J].研究简报,2002,24(1):133-135.[10] 王晓东. 计算机算法设计与分析[M] . 北京: 电子工业出版社, 2000.附录逐步搜索法A=[-3,1,0,1;1,-3,0,0;0,0,-3,1;1,0,1,-3]; %系数矩阵%b=[-1;-2;-2;-1];D=diag(diag(A)); %A的对角矩阵%U=-triu(A,1) ; %A上三角矩阵%L=-tril(A,-1); %A的下三角矩阵%m=[];t=[]; %创建两个空矩阵分别存放相对应的谱半径和记录迭代次数% for w=1:0.01:1.1; %取w的值%q=(D-w*L);p=inv(q); %求q的逆%Gw=p*((1-w)*D+w*U); %求得迭代矩阵%V=eig(Gw); %计算迭代矩阵的特征值%R=max(abs(V)); %找出绝对值最大的谱半径%m=[m,R];plot(w,R,'o'); %画出w和R的关系图%grid;hold onf=inv(D-w*L)*b*w;x0=[0;0;0;0]; %取迭代初值%y=Gw*x0+f;n=1;while norm(y-x0)>=1.0e-6 %迭代条件%f=inv(D-w*L)*b*w;x0=y;y=Gw*x0+f;n=n+1;endt=[t,n];end[h,k]=min(t); %h记录最小的迭代次数,k记录第几个数最小%求解过程g=1.0+(k-1)*0.01;f=inv(D-g*L)*b*g;y=Gw*x0+f;n=1;while norm(y-x0)>=1.0e-6;f=inv(D-g*L)*b*g;x0=y;y=Gw*x0+f;n=n+1;endk,h,t,m,g %g是最佳松弛因子%黄金分割法A=[-3,1,0,1;1,-3,0,0;0,0,-3,1;1,0,1,-3]; %系数矩阵%b=[-1;-2;-2;-1];D=diag(diag(A)); %A的对角矩阵%U=-triu(A,1) ; %A上三角矩阵%L=-tril(A,-1); %A的下三角矩阵%c=1;d=2;m=0.618;x0=[0;0;0;0];w1=d-m*(d-c);w2=c+m*(d-c);y=[];r=[];s=[];z=[];while abs(w2-w1)>=0.05n=1; w=w1;G=inv(D-w*L)*((1-w)*D+w*U);f=w*((D-w*L)*b);x=G*x0+f;while norm(x-x0)>=1.0e-6x0=x;G=inv(D-w*L)*((1-w)*D+w*U);f=w*((D-w*L)*b);x=G*x0+f;n=n+1;endr=[r,w];y=[y,n];k=1; w=w2;G=inv(D-w*L)*((1-w)*D+w*U);f=w*((D-w*L)*b);x=G*x0+f;while norm(x-x0)>=1.0e-6x0=x;G=inv(D-w*L)*((1-w)*D+w*U);f=w*((D-w*L)*b);x=G*x0+f;k=k+1;ends=[s,w];z=[z,k];if n>kc=w1;w1=d-m*(d-c);w2=c+m*(d-c);elsed=w2;w1=d-m*(d-c);w2=c+m*(d-c);endendr,y,s,z,w2致谢本文在指导老师崔老师的精心指导下完成的,无论是在选题、确定研究内容和研究过程中都凝聚着由老师的辛勤与汗水.由老师的严谨治学态度、无私奉献的精神、丰富的教学经验令我受益匪浅.在他那里不仅让我学到了许多宝贵的知识财富,更让我懂得了许多做人的道理.在这里我衷心地向我的指导教师崔艳星老师表示最诚挚的谢意和尊敬.最后向所有关心我和帮助我的老师和同学们表示我衷心的感谢和最诚挚的谢意!。
松弛迭代法

一、松弛迭代计算公式
松弛迭代法
赛德尔迭代法的迭代公式可表示为 i 1 n 1 xi( m +1) = (bi ∑ aij x (jm +1) ∑ aij x (jm ) ) aii j =1 j =i +1
=x
(m) i i 1 n 1 ( m +1) + (bi ∑ aij x j ∑ aij x (jm ) ) aii j =1 j =i
令Bω = ( D ωL) 1[(1 ω ) D + ωU ], gω = ( D ωL) 1 b, 则
x ( m +1) = Bω x ( m ) + gω
(m = 0,1,2, L)
三、松弛法算法 输入 方程组的阶数n, A的元素aij,≤ i, j ≤ n; b的分量bi ,1 ≤ i ≤ n; 1
在实际计算中,松弛法常采用以下形式:
x
( m +1) i
= (1 ω ) x
( m) i
+ ω (bi ∑ aij x
j =1
i 1
( m +1) j
∑ aij x (jm ) ) / aii (i = 1,2, L , n)
j =i
n
二、松弛法的矩阵形式 x (m +1) = ( D ωL) 1[(1 ω ) D + ωU ]x ( m ) + ω ( D ωL) 1 b (m = 0,1,2, L)
ri( m +1) → 0(i = 1,2, L , n)
在修正量前乘上一个参数,即
xi( m +1) = xi( m ) + ωri( m +1)
超松弛迭代法解线性方程组

设it题目:摘要本文是在matlabll境下熟悉的运用计算机编程培言并结合超松弛变量起松弛迭代法的理论基础对方程组求解。
首先,本文以愉分方程边值问题为例,导出了离散化后线11方程组即稀疏线性方程组,转化对柿蔭线性方程组求解冋題。
其次,用起松弛(SOR)选代法编写matlab 程序,湘产生的柿疏线性方程组进行迭代法求解。
然后,分别改变松弛因子3和分段数n的值,分桥其收敛性和收敛速H, 18出各个方面的分林和比较需到相关结论。
最后,将起松弛迭代算法在it算机上运用matlab 言实现,借岀了一组与猜确解较接近的数值解,并画图比较,騎iil逐次超松弛(SOR)选代法的績确性。
关键词:柿匾线性方程组逐次超松弛迭代法松弛因子matlab编程-、间题提岀考虑两点逆值冋题为了把做分方程离IL 把[oj]E 间“等分,令/亠丄,脸=〃?,山12…山一1,得到 n 差分方程° 治 一 2)1 + X+—畑 一 X _ “or十—C< -h 2h简化为(£ + 必+i - © + 心+ % =肿,从而离散后得到的线性方程组的系数矩阵为一(2g + /?) £ + h£-(2£ + h )A =££ + /?一(2w + h )_对£ = 19 a = 0.4 , n = 200 ,分别用e = 1、6? = 0.5和e = 1.5的超松弛迭代法 求解线性方程组,要求有4也有效数字,然后比较与精确解的淚差,探讨使超松 弛选代法收敛较快的0取值,对结果进行分轿。
改变»论同wrOo二、超松弛迭代法产生的背景容易知道它的精确解为 + ax.£ + h—(2w +y =对从实际间题中借到维数相当夫的线11代数方程组的求解仍然十分困难,以至使人们不能在允许的时间内用貞接方法得到解,Slit,客观上要求用新的方法来解决大维数方程组的求解I'nJSo现有大名数迭代法不是对各类线11方程组都有收敛性,在解题时,要对原方程组葩晖作一根本的变换,从而可能使条件数变坏,也可能破坏了变换前后方程组的等价性,以员丧失使原方程组的对称II等。
流体力学数值计算的逐次超松弛(SOR)并行算法

S OR t r to S Pa a l lAl o ihm o o u i n o I e a i n’ r le g r t f r S l to f
Li e r Eq a i n s d o PI n a u to s Ba e n M
W ElZhifng —a ( o t nie st N r h U v r iy ofChi a.T ayu n 0 05l, n i a 30 Chi ) na
m is ls.a p r le l ihm R t r to b s d on M PIi e e e n t i r il . The v ra t r tvef m ul s s ie a al lagort ofSO ie a in a e spr s ntd i h sa tc e a i ntie a i or a i de i e rv d.t e pr l m ’ e l rz ton a d t e da as or ge a d t e c m pu i n c m m u c ton pr h ob e S r gu a ia i n h t t a n h o tng a d o nia i ogr s r n e pr— e sa ei t r e td i e ai A n t e ho S e f c i n s s pr e e n d t l . d he m t d’ fe tve e s i ov d by num e ia pe i en a i rc lex rm t ton. Ke y wor s: e o d a r dyn m i o c ln a qu ton a c f r e; ie r e a i s; S R ; p r l l rt O a al ago ihm el
超松弛迭代法历史演变

超松弛迭代法历史演变超松弛迭代法(SOR)是一种用于线性方程组求解的数值方法。
它结合了松弛迭代法和高斯-赛德尔迭代法的优点,具有快速收敛和稳定性的特点。
本文将从超松弛迭代法的起源开始,详细阐述它的历史演变。
超松弛迭代法最早由美国数学家David M.Young于1950年提出。
当时,他受到高斯-赛德尔迭代法的启发,希望通过引入松弛参数来提高迭代的收敛速度。
这个想法是在每次迭代时,对于每个未知数,根据已知的值和方程组来更新它的值,而不是等到所有未知数都计算完毕再更新。
这样可以更快地逼近方程组的解。
然而,Young的初始提案并不是很成功。
他发现在一些情况下,超松弛迭代法的收敛速度并没有比传统的迭代法更快。
于是,他开始研究如何选择合适的松弛参数。
在他的研究中,他发现如果松弛参数大于1,超松弛迭代法的收敛速度会加快,而如果松弛参数小于1,收敛速度反而会变慢。
这一发现打开了超松弛迭代法的新局面。
在1960年代,科学家们开始对超松弛迭代法进行更深入的研究和改进。
他们发现,超松弛迭代法在对称正定矩阵的线性方程组求解中表现得尤为出色。
这是由于对称正定矩阵具有特殊的性质,可以使得超松弛迭代法更快地收敛。
为了进一步提高超松弛迭代法的收敛速度,研究人员开始探索如何自适应地选择松弛参数。
他们发现,选择合适的松弛参数可以使得超松弛迭代法在不同情况下都表现得更好。
于是,一些自适应超松弛迭代法被提出。
在20世纪80年代和90年代,随着计算机技术的快速发展,科学家们开始使用超松弛迭代法来解决更大规模的线性方程组。
他们发现,超松弛迭代法可以通过并行计算的方式,进一步提高求解效率。
这为超松弛迭代法的应用提供了更广阔的空间。
随着时间的推移,超松弛迭代法在求解线性方程组中的应用越来越广泛。
它被广泛应用于科学计算、工程建模、优化问题等领域。
许多数值计算软件和库都提供了超松弛迭代法的实现,使得使用者可以方便地应用该方法。
尽管超松弛迭代法在求解线性方程组中表现出色,但它也有一些局限性。
超松弛迭代法公式与jacobi的关系

超松弛迭代法公式与jacobi的关系超松弛迭代法(SOR)和Jacobi迭代法是常用的求解线性方程组的迭代方法。
它们都是通过迭代逼近线性方程组的解,但是在具体的迭代过程和收敛性上有所不同。
首先来看一下Jacobi迭代法。
给定线性方程组Ax=b,其中A是一个n×n的方阵,b是一个n维向量,x是我们要求解的未知向量。
Jacobi迭代法的思想是将线性方程组的每个方程分别写成一个未知量的函数,并通过迭代的方式逐步求解。
具体来说,Jacobi迭代法的迭代公式如下:$$x^{(k+1)}=D^{-1}(b-Rx^{(k)})$$其中,$x^{(k+1)}$表示第k+1次迭代得到的近似解,$x^{(k)}$表示第k次迭代得到的近似解,D是A的对角线元素组成的对角矩阵,R是A的非对角线元素组成的矩阵。
这个公式的意义是,我们通过用上一次迭代得到的近似解$x^{(k)}$来逼近线性方程组的解,每次迭代都只使用上一次迭代得到的近似解。
接下来我们来看看超松弛迭代法。
超松弛迭代法是对Jacobi迭代法的改进,通过引入一个松弛因子ω来加速迭代过程。
其迭代公式如下:$$x^{(k+1)}=(D-ωL)^{-1}[(1-ω)D+ωU]x^{(k)}+(D-ωL)^{-1}b$$其中,L是A的下三角部分,U是A的上三角部分。
超松弛迭代法在每次迭代中使用了上一次迭代和当前迭代的信息,通过调节松弛因子ω的取值,可以加速收敛过程。
从迭代公式可以看出,Jacobi迭代法和超松弛迭代法的主要区别在于超松弛迭代法引入了松弛因子ω,并且在每次迭代中使用了上一次迭代的信息。
这使得超松弛迭代法在一定条件下可以比Jacobi迭代法更快地收敛到线性方程组的解。
在实际应用中,选择合适的松弛因子ω对超松弛迭代法的收敛性和稳定性至关重要。
通常情况下,选择ω的取值范围为(0,2),对于某些特定的线性方程组,可以通过一些经验规则或者数值试验来确定最佳的ω值。
线性方程组的迭代法雅可比高斯塞德尔和超松弛迭代ppt课件

a11x1 a12 x2 a1n xn b1
a21 x1
a22 x2
a2n xn
b2
an1x1 an2 x2 ann xn bn
写据成此建立n 迭ai代j x公j 式 bi
i 1,2,, n
上若xi式(xkai称1ii)为0ja1解a11i(iiii方((bb程1ii,2组,jj的njn,1i n1Jaa)aijcxio,j分(jxbk)ij离)迭) 代出公i变i式量1,。21x,,2i , n , n
j=1
j ≠i
称A为严格对角占优阵。
2.如果A的元素满足
∑n
ai,i ≥ ai, j ,i = 1,2,..., n
j=1 j≠i
且至少一个不等式严格成立,称A为弱对角占优阵。 16
定义:设 A = (ai,j )n×n ,n ≥ 2
如果存在置换矩阵P,使得
PT
AP
A11 0
A12
A22
1
§6.1 迭代法的基本思想
迭代法的基本思想是将线性方程组转化 为便于迭代的等价方程组,对任选一组初始 值 xi(0) (i 1,2,, n) ,按某种计算规则,不断地 对所得到的值进行修正,最终获得满足精度 要求的方程组的近似解。
2
设 A Rnn 非奇异,b Rn,则线性方程组
Ax b 有惟一解 x A1b ,经过变换构造
x (k 1) 1
x (k 1) 2
x1(k 2x1(k)
)
x(k) 2
4x2(k )
3 3
取
x (0) 1
x (0) 2
0
计算得
数值分析Python实现系列——二、逐次超松弛迭代法(SOR)

数值分析Python 实现系列——⼆、逐次超松弛迭代法(SOR )⼆、超松弛迭代法(SOR)1.原理:回顾:在⼀般情况下 : 收敛过慢甚⾄不收敛的B 与f ,经过对系数矩阵A 分裂成A =M −N 的形式, 使得迭代公式变为: x k +1=(I −M −1)Ax k +M −1f 雅克⽐迭代法选取 : 现将A 如下分解A =D −L −U ,D 为对⾓阵,L 为下三⾓阵,U 为上三⾓阵,取M ≡D ,取N ≡L +U ,在这⼀章中我们选取下三⾓矩阵M =1ω(D −ωL ),ω>0,其中ω为松弛因⼦,我们可以发现当ω为1时,M =D −L ,正是⾼思-赛德尔迭代法,下⾯推导迭代公式:x k +1=I −M −1A x k +M −1bx k +1=I −ω(D −ωL )−1A x k +ω(D −ωL )−1bx k +1=(D −ωL )−1((1−ω)D +ωU )x k +ω(D −ωL )−1b推导完毕,我们较为常⽤的是下式:(D −ωL )x k +1=((1−ω)D +ωU )x k +ωb以及:x (0)=(x (0)1,...,x (0)n )T ,x (k +1)i =x (k +)i +Δx i Δx i =ωb i −i −1∑j =1a ij x (k +1)j −n ∑j =1a ij x (k )j a ii i =1,2,...,n ,k =0,1,...,ω为松弛因⼦当ω>1时为超松弛迭代,当ω<1时为低松弛迭代迭代终⽌条件:max 1≤i ≤n |Δx i |=max1≤i ≤n |x (k +1)i −x (k )i |<ε,下⾯我们试试⽤Python 实现这⼀功能.2.实现:import numpy as npimport matplotlib.pyplot as pltMAX = 110 # 遍历最⼤次数A = np.array([[-4, 1, 1, 1], [1, -4, 1, 1], [1, 1, -4, 1], [1, 1, 1, -4]])b = np.array([[1], [1], [1], [1]]) # 注意这⾥取列向量omega_list = [1 + 0.005 * i for i in range(100)] # 取到不同的omega 值,观察趋势length = len(A)count = [] # 记录遍历的次数for omega in omega_list: # 遍历每⼀个omega 值times = 0x_0 = np.zeros((length, 1))x_hold = x_0 + np.ones((length, 1))while (np.linalg.norm(x_hold - x_0, ord=2) >= 10 ** (-5)) and (times <= MAX):# 遍历停⽌条件以k+1次与k 次迭代的向量差的⼆范数以及遍历最⼤次数为标准x_hold = x_0.copy() # 这⾥不要⽤赋值,要⽤copyx_new = x_0.copy()for i in range(length):# 根据迭代公式迭代x_new[i][0] = x_0[i][0] + omega * (b[i][0] - sum([A[i][j] * x_new[j][0] for j in range(i)]) - sum([A[i][j] * x_0[j][0] for j in range(i, length)])) / A[i][i]x_0 = x_new.copy()times += 1count.append(times)plt.plot(omega_list, count) # 观察omega 与迭代次数的关系plt.show()思路:1.遍历设限:第⼀种是到达精度,到达精度停⽌迭代,第⼆种是到达规定最⼤次数,这个可以⾃⼰设定.2.在根据迭代公式改变各个向量分量时,要注意遍历范围.结果:{。
第六章 解线性方程组的迭代法.ppt

称 J 为解 Ax b的雅可比迭代法的迭代阵.
(2.5)
15
研究雅可比迭代法(2.5)的分量计算公式.
记 x(k ) ( x1(k ) ,, xi(k ) ,, xn(k ) )T ,
由雅可比迭代公式(2.5), 有
Dx(k1) (L U )x(k ) b,
或
i1
n
aii
9
定义1 (1) 对于给定的方程组 x Bx f,用公式(1.6) 逐步代入求近似解的方法称为迭代法(或称为一阶定常迭代 法,这里 B与 k无关).
(2) 如果 lim x(k) 存在(记为 x * ),称此迭代法收敛, k
显然 x *就是方程组的解,否则称此迭代法发散. 研究 {x(k )}的收敛性. 引进误差向量
22
例2 用高斯-塞德尔迭代法解线性方程组(1.2).
8x1 3x2 2x3 4x1 11x2 x3
20, 33,
6x1 3x2 12x3 36.
(1.2)
取 x(0) (0, 0, 0)T, 按高斯-塞德尔迭代公式
x ( k 1) 1
记为 Ax b , 其中
(1.2)
8 A4
6
3 2 11 1, 3 12
x1 x x2 ,
x3
20 b 33 .
36
方程组的精确解是 x* (3, 2, 1)T . 现将(1.2)改写为
4
12
于是,求解 Ax b转化为求解 Mx Nx b,即求解
Ax b 求解x M 1Nx M 1b.
可构造一阶定常迭代法
雅可比迭代法和高斯超松弛迭代

雅可比迭代法分量形式(63)式也可改写为
(64)
(64)式更方便于编程求解。
雅可比迭代法公式简单,迭代思路明确。每迭代一次只需计算n个方程的向量乘法,程序编制时需设二个数组分别存放xk和xk+1便可实现此迭代求解。
2、高斯-赛德尔(Gauss-seidel)迭代法
由雅可比迭代法可知,在计算xk+1的过程中,采用的都是上一迭代步的结果xk。考察其计算过程,显然在计算新分量xik+1时,已经计算得到了新的分量, 。有理由认为新计算出来的分量可能比上次迭代得到的分量有所改善。希望充分利用新计算出来的分量以提高迭代解法的效率,这就是高斯-赛德尔迭代法(简称G-S迭代法)对(64)式进行改变可以得到G-S迭代法的分 量形式
(75)
其中ω称为松弛因子。
式(75)是迭代公式(74)的一个改进,可以选择松弛因子ω加速迭代过程的收敛。 式(75)的分量形式为
(76)
若对上述改进的迭代公式,按高斯-赛德尔迭代法尽量利用最新迭代得到的分量的原则,又可得到新的迭代公式
(77)
当线性方程组的系数矩阵A具有非零主元(aii≠0,i=1,2,3,…n)的特点时,可 以得到主元为1的方程组形式
雅可比迭代法和高斯-赛德尔迭代法以及超松弛迭代
对于给定的方程 用下式逐步代入求近似解的方法称为迭代法。如xk(当 )的极限存在,此极限即方程组的真正解,此迭代法收敛,否则称迭代法收敛。
1、雅可比(Jacobi)迭代法
设有方程组
Ax=b (56)
其展开形式为
(57)
系数矩阵A为非奇异阵,且 (i=1-n)A可分解为
高斯-赛德尔迭代的矩阵形式可表达为
(69)
高斯-赛德尔迭代法每步迭代的计算量与雅可比迭代相当,但在计算机进行计算时,只需存放x一个数组。
超松弛迭代法求解泊松方程

计算流作业1. 题目对1512cm cm ⨯的矩形平板,假设板表面绝热,仅在四条边有热流通过,且导热系数为常数。
设一条15cm 边温度保持为100︒,其余三条边温度为20︒。
计算板内稳定的温度场并绘出等温线。
采用迭代法计算时,采用不同的松弛因子,并比较收敛速度,观察在不同的网格尺度下,最佳松弛因子的变化。
2. 理论基础超松弛SOR 迭代法迭代公式为:11212,,1,1,,1,1,2(1)(())2(1)m m m m m m i j i j i j i j i j i j i j x ωψωψψψβψψζβ++++-+-=-++++-+3. 结果分析计算时取,x y 方向网格数分别为(4,5),(8,10),(32,40),松弛因子取值范围为1.0,1.0475,1.095, 1.95。
控制固定余量为510-3.1 温度场网格尺度为0.5dx dy cm ==时,最佳松弛因子下的平板温度场分布结果基本上是对称的。
3.2最佳松弛因子-网格尺度显然,随着网格尺度增加,最佳松弛因子逐渐减小,基本上呈现指数规律。
4.附件!初始温度分布subroutine initial(tt_in,nx_in,ny_in)implicit noneinteger::i,jinteger,intent(in)::nx_in,ny_in !横纵网格数real(kind=8),dimension(0:nx_in,0:ny_in)::tt_in !温度矩阵tt_in=0.tt_in(0,0:ny_in)=20.tt_in(nx_in,0:ny_in)=100.tt_in(1:(nx_in-1),0)=20.tt_in(1:(nx_in-1),ny_in)=20.do i=1,nx_in-1do j=1,ny_in-1tt_in(i,j)=60.end doend doend subroutine initial!超松弛迭代法subroutine sor(tt_sor,nx_sor,ny_sor,ome,be)implicit noneinteger::i,jinteger,intent(in)::nx_sor,ny_sor !横纵网格数real(kind=8),dimension(0:nx_sor,0:ny_sor)::tt_sor !温度real(kind=8),intent(in)::ome,be !松弛因子,网格参数hreal(kind=8)::tem1do i=1,nx_sor-1do j=1,ny_sor-1tem1=tt_sor(i+1,j)+tt_sor(i-1,j)+be**2*(tt_sor(i,j+1)+tt_sor(i,j-1)) tt_sor(i,j)=(1-ome)*tt_sor(i,j)+ome*tem1/2./(1+be**2)end doend doend subroutine sorprogram poissonimplicit noneinteger::i,j,k,linteger,parameter::numk=8 !计算时取的网格大小种类数real(kind=8),allocatable,dimension(:,:)::tem !温度integer::numx,numy !横纵网格数real(kind=8),parameter::lx=12.,ly=15. !计算域长宽integer,parameter::nw=20 !计算时omega取值的数目integer,dimension(nw)::ncell !存储同一omega下迭代需要的步数 real(kind=8)::om,bt !松弛因子,网格参数hreal(kind=8)::dx,dy !横纵方向上的网格参数integer::ct !中间变量real(kind=8)::w_opt !最佳松弛因子integer,parameter::status=-1 !状态变量.1-计算不同网格尺度下的最佳松弛因子!-1-计算特定尺度,取最佳松弛因子时得到的最终温度分布open(unit=15,file='poisson.dat')open(unit=16,file='poisson2.txt')write(16,'("title = data")')write(16,'("variables = x,y,t")')write(16,'("zone i=",i4,3x,"j=",i4)')8,nwdo l=1,8numx=4*lnumy=5*ldx=lx/numxdy=ly/numybt=dx/dyallocate(tem(0:numx,0:numy))ct=10**10do k=1,nwom=1.+0.95*dble(k)/dble(nw)call caclulate_w(tem,numx,numy,om,ncell(k),bt)write(16,'(1x,d15.5,3x,d15.5,3x,i10)')l,om,ncell(k) if(ncell(k)<ct) thenct=ncell(k)w_opt=omend ifend doif(status==1) thenwrite(15,'(1x,d15.5,3x,d15.5)')dx,w_optelse if(status==-1 .and. l==6) thenwrite(15,'("title = data")')write(15,'("variables = x,y,t")')write(15,'("zone i=",i4,3x,"j=",i4)')numx+1,numy+1call caclulate_w(tem,numx,numy,w_opt,ct,bt)do j=0,numydo i=0,numxwrite(15,*)i*dx,j*dy,tem(i,j)end doend doend ifdeallocate(tem)end doend program poisson!计算特定网格和松弛因子下的温度subroutine caclulate_w(tt,nx,ny,omega,nncell,beta)implicit noneinteger::i,jinteger,intent(in)::nx,ny !横纵网格数real(kind=8)::error=1.d-5 !误差限integer,intent(out)::nncell !存储迭代次数real(kind=8)::omega,etem,beta !etem-两次计算间的平均误差real(kind=8),dimension(0:nx,0:ny)::tem0 !存储上一次计算得到的温度矩阵real(kind=8),dimension(0:nx,0:ny)::tt !温度矩阵etem=1.d10nncell=0call initial(tt,nx,ny)do while(etem>error)nncell=nncell+1tem0=ttcall sor(tt,nx,ny,omega,beta)etem=0.do i=1,nx-1do j=1,ny-1etem=etem+(tt(i,j)-tem0(i,j))**2 end doend doetem=sqrt(etem)end doend subroutine caclulate_w。
第六章第三节逐次超松弛迭代法

则说 A 是具有相容次序的矩阵.
注意:
若矩阵 A aij 具有相容次序, 则属于同一子集的元素之间没有联系, 即若 i, j Wk , aij 则
0, , a ji 0 . 且
例3
0 0 1 4 1 4 1 0 A 0 1 4 0 0 4 1 0
x0i (i 1,, n) ;参数 ;容限 TOL ;最大迭代次数 m
输出 近似解 x1 , x2 , x n 或迭代次数超过 m 的信息.
step 1
对 k 1,, n 做 step2—4. 对 i 1,2,, n
step 2
xi (1 ) x0i
step 3 step 4 对 i 1,2,, n
定理 1 设方程组 Ax b 的系数矩阵 A 的主对角元素 aij 0, i 1,, n ,则 SOR 方法
收敛的充分必要条件为
(T ) 1
其中 T 是 SOR 方法的迭代矩阵.
定理 2
设方程组 Ax b 的系数矩阵 A 的主对角元素 aij 0, i 1,, n ,则 SOR 方法
2
x 我们把(3.1)式中的中间 ~i( k ) 消去,则有
i 1 ~ ( k ) (b a x ( k ) xi ij j i aii j 1
j i 1
a
n
ij
x (jk 1) ) (1 ) xi( k 1)
i 1,2,, n, k 1,2
3
例1 方程组
5 x1 x 2 x3 x 4 4 x 10 x x x 12 2 3 4 x1 x 2 5 x3 x 4 8 x1 x 2 x3 10 x 4 34
第6章 线性方程组的迭代法

( 0) ( 0) ( 0) X 0 ( x1 , x2 ,, xn ),
雅可比迭代法公式的分量形式为:
( k 1) 1 (k ) (k ) (k ) (b1 a12 x 2 a13 x 3 a1n x n ) x1 a11 ( k 1) 1 (k ) (k ) (k ) x ( b a x a x a x 2 2 21 1 23 3 2n n ) a 22 1 ( k 1) (k ) (k ) (k ) x ( b a x a x a x n n1 1 n2 2 n n 1 n 1 ) n a nn
x( k 1) x( k ) 10m
这种方法称为迭代法。
2016/11/19
接下来的问题就是迭代矩阵 G 的构造法。
5
§6.2 雅可比(Jacobi)迭代法
考察一般的 n元线性方程组
a11 x1 a12 x 2 a1n x n b1 a x a x a x b 21 1 22 2 2n n 2 a n1 x1 a n 2 x 2 a nn x n bn
或 构造方程组的等价方程组
x1 x1 x2 3 x2 2 x1 4 x2 3
Jacobi迭代公式。
(k ) ( k 1) 3 x2 x 1 2 2 (k ) 3 2 x ( k 1) 1 x2 5 5
据此建立迭代公式
第六章 解线性方程组的迭代法
1. 雅可比(Jacobi)迭代法 2. 高斯-塞德尔(Gauss-Seidel)迭代法
3. 超松弛迭代法(SOR方法)
4. 迭代法的收敛性
第六章 解大型稀疏线性方程组的迭代法

且有 x(5) x 0.0007
2021/4/26
(2)G-S迭代公式
xx12((kk 11))
(8x2(k) x3(k))/8 (112x1(k1) x3(k))/1
求近似解的方法,称为迭代法(或称为一阶定常迭代法)。
(2)如果对任意初始近似 x(0,) 都有 limx(k) x*,称迭代法
(1.10)为收敛,否则称迭代法为发散。 k
迭代法研究的问题:
§2
(1)构造各种解 Axb的有效迭代法(有效:x(k) 收敛)。
(2)研究迭代法的收敛性及收敛速度。
§3
注:(1.10)为迭代公式,简记为:x ( 1 k ) B ( kf x ( ) k , 0 , • 1 ,2 , ) 。
2.2 高斯-塞德尔迭代法(G-S) ji
(优1)点G-:S迭代存xx i(贮( 0k ) 1 少)( x;1a (1 0i),i( b i xni(j 0 1 1 ))a Tix jj(Gk 1 -)S 迭j n i代 1 a 阵ix jj(k B )), ((D i 1 L ,)2 1 ,U ,n G )
a0n1,n
常用的是将A分裂为A M N (2.3)
其中 M为可选择的非奇异阵使 Mxd容易求解,一般M选为A的某
种近似,于是 A b xM N x b x 或 xM 1N x M 1b。
若记
B M 1 N M 1 (M A )IM1A,•••f M1b,
并取初始向 •x(量 0),则x(0)•( 可 任 意 取B是)迭代矩阵
逐次迭代法

设
Ax b ,
其中
A D L U
为非奇异矩阵,
且 D 非奇异.
(1) SOR迭代法收敛的充要条件是 ( BSOR ) 1 。 其中
BSOR ( D wL)1[(1 w) D wU ]
6
(2)SOR迭代法收敛的必要条件为 0< <2。 (3)若系数阵A对称正定,则当0< <2时, SOR迭代法收敛
b
x ( k 1) ( D L)1 ((1 ) D - U ) x ( k ) ( D L)1 b
这就是SOR迭代法的矩阵表示。
4
SOR迭代法的迭代矩阵
BSOR ( D L) ((1 ) D - U )
1
5
SOR 迭代法收敛性 定理
6.3 超松弛迭代法
1
思 想
利用第k次迭代值和第k +1次的G-S迭代值 作加权平均
G-S迭代法的计算公式 :
x
( k 1) i
x
( k 1) i
பைடு நூலகம்
bi aij x
j 1
i 1
( k 1) j
j i 1
a
n
ij
x
(k ) j
a ii
作加权平均
x
( k 1) i
x
(4)若系数阵A严格对角占优(或弱对角占优不 可约),则当 0< 1时, SOR迭代法收敛。
7
2
( k 1) i
(1 ) x
(k ) i
:松弛因子
逐次超松弛(SOR)迭代法的分量形式:
bi aij x
j 1 i 1 ( k 1) j
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
k 1,2
T 取初始得量 x0 0,0,0,0 ,迭代六次得结果见表 6.2.
图表6.2
5
从表6.2得到
算法6.3
输人
5.56 10 4 应用SOR方法解方程组 Ax b
x6 x
方程组的阶数 n ; A 的元素 aij (i, j 1,, n) ; b 的分量 bi (i 1,, n) ;初始向量 x 0 的分量
10
则说 A 是具有相容次序的矩阵.
注意:
若矩阵 A aij 具有相容次序, 则属于同一子集的元素之间没有联系, 即若 i, j Wk , aij 则
0, , a ji 0 . 且
例3
0 0 1 4 1 4 1 0 A 0 1 4 0 0 4 1 0
i 1,2,, n
x 这里,引入一个中间量 ~i 和一个加速收敛的参数 (限于实数),称。为松弛因子 xi(k ) 可 ( k 1) 以看作是 xi 和 ~i( k ) 的加权平均.当 1时(3.1)就是 Gauss-Seidel 迭代法. 1 时, x
(k )
(3.1)称为逐次超松弛迭代法; 1 时,(3.1)称为逐次低松弛迭代法.通常,统称为逐次超 松弛迭代法,或简称为 SOR 迭代法.
定义3
1 给定一个 n 阶矩阵 A aij ,记 W ,2,, n.若存在 W 的两个不相交的子集 S1 , S 2 使得
(1) (2)
S1 S 2 W ;
若 i, j 有联系,则 i, j 分别属于这两个子集,
11
则称矩阵 A 具有性质 A
注意:定义 3 中 S1 或 S 2 可以是空集.若有一个是空集,则矩阵 A 必为对角阵.从定义 3 还 可看到,若矩阵 A 具有性质 A ,则属于同一子集的元素之间没有联系,即若 i, j S1 :或 i, j S 2 , 则 aij 0 或 a ji 0
3.3 相容次序、性质A和最佳松弛因子
我们从例 1 看到,SOR 方法收敛得快慢与松驰因子。的选择有关.松弛因子选择得好,会加快 SOR 方法的收敛速度.这一段,我们将对一类特殊的矩阵(在偏微分方程数值解法中常遇到的), 简要地叙述最佳松弛因子如何选取的问题.
定义 1
定义 2
给定一个 n 阶矩阵 A aij ,对 i j ,若或 a ji 0 ,则说 i, j 是有联系的.
( ( ( x1( k ) 0.2 x1( k 1) 0.24 x2k 1) 0.24 x3k 1) 0.24 x4k 1) 0.96
( ( ( ( x2k ) 0.12 x1( k ) 0.2 x2k 1) 0.12 x3k 1) 0.12 x4k 1) 1.44
立解方程组 Ax b 的遥次超松弛迭代法(SOR 方法)
i 1 ~ ( k ) 1 (b a x ( k ) xi ij j i aii j 1
j i 1
a
n
ij
x (jk 1)
(3.1)
xi( k ) xi( k 1) ( ~i( k ) xi( k 1) ) x
(3.2)
上式的矩阵表示形式是
xk ( Lx k Ux k 1 D 1b) (1 ) xk 1
或者
(3.3)
xk T xk 1 ( I L) 1 D 1b
其中
(3.4)
Tw ( I L) 1 ((1 ) I U )
取三个互不相交子集, W1 {1} , W2 {2,4} ,W3 {3} .容易验证它们满足定义 2 中的条件(1)和(2). 例如, i 1 W1 , a2,1 1 0,2 W2 , a14 1 0,4 W2 , i 2 W2 , a21 1 0 1 W1 , a23 1 0,3 W3 因此矩阵 A 具有相容次序.
的迭代矩阵了。的谱半径大于等于 1 ,即
(T ) 1
且 SOR 方法收敛的必要条件是
0 2
(3.6)
证明 由(3.5)式,有
det(T ) det((I L) 1 ) det((1 ) I U ) det((1 ) I U ) (1 ) n
x0i (i 1,, n) ;参数 ;容限 TOL ;最大迭代次数 m
输出 近似解 x1 , x2 , x n 或迭代次数超过 m 的信息.
step 1
对 k 1,, n 做 step2—4. 对 i 1,2,, n
step 2
xi (1 ) x0i
step 3 step 4 对 i 1,2,, n
或
((1 ) I U ) x ( I L) x
H 用 x D 左乘上式两端得
(1 ) x H D x H DUx x H D x H DLx ,
其中 D diag(a11 ,, ann ) , x H 表示 x 的共轭转置.记 x H Dx q , x H DLx i ,由(2.8)式
定理 1 设方程组 Ax b 的系数矩阵 A 的主对角元素 aij 0, i 1,, n ,则 SOR 方法
收敛的充分必要条件为
(T ) 1
其中 T 是 SOR 方法的迭代矩阵.
定理 2
设方程组 Ax b 的系数矩阵 A 的主对角元素 aij 0, i 1,, n ,则 SOR 方法
( ( ( ( x3k ) 0.24 x1( k ) 0.24 x2k ) 0.2 x3k 1) 0.24 x4k 1) 1.92
( ( ( ( x4k ) 0.12 x1( k ) 0.12 x2k ) 0.12 x3k ) 0.2 x4k 1) 4.08
§3 逐次超松弛迭代法(SOR方法)
By alex
1
一般说来,Jacobi 迭代法收敛太慢,在实践中很少使用.在 Jacobi 迭代法收敛很慢的情 况下,Gauss-Seidel 迭代法也并不明显快一些.因此,欲对 Gauss-Seidel 迭代法作简单的修 改,以提高其收敛速度.
T 假设方程组 Ax b 的系数矩阵 A aij nn , aii 0(i 1,, n), b b1 ,, bn .我们用下面的迭代格式来建
7
n 从 (T ) 1 而,迭代矩阵了-的所有特征值之积等于 (1 ) .因此有
(T ) 1
据定理 1,若 SOR 方法收敛,则 (T ) 1 ,因此 1 1 .由于。取实数,故有 0 2
定理 2 说明,若要 SOR 方法收敛,必须选取松弛因子 ,使 (0,2) .但当 (0,2) 时,未必 对任何线性方程组,SOR 方法都收敛.
1 就例 3,取 S1 ,3 , S 2 2,4 ,易知它们满足定义 3 中的条件(1)和(2).因此例 1 的矩阵 A
具有性质 A .
例4
考虑 ( x, y ) 平面的区域 G 内的 Dirichlet 问题:
2u 2u 0 , ( x, y ) G ; x 2 y 2
定理 3 若线性方程组 Ax b 的系数矩阵 A 是对称正定的,则 0 2 当时,SOR 方法收敛.
证明
设 是 SOR 方法的迭代矩阵
Tw ( I L) 1 ((1 ) I U )
的任意一个特征值, x 为与其相应的特征向量,则有等式
( I L) 1 (((bi aij x j
j 1
i 1
j i 1
a
n
ij
xoj
若 x x0 TOL ,则输出 ( x1 ,, x n ) ;停机.
x 0 i xi
step5 输出(‘Maximun number of iterations exceeded,); 停机.
6
3.2 SOR方法的收敛性 现在,我们来讨论逐次超松弛迭代法的收敛性问题.
(3.5)
1 它是 SOR 方法的迭代矩阵.特别,若取 1,则 T1 ( I L) U 是 Gauss-Seidel 迭代法的
迭代矩阵. 若将矩阵 A 分裂成
A 1
( D DL)
1
((1 ) D DU ), 0
按§1 所述的建立相容迭代法的方法,立即可得 SOR 方法.因此,SOR 方法与方程组 Ax b 是完 全相容的.
( x4k )
1 ( ( (34 x1( k ) x2k ) x3k ) ) 10
k 1,2,
4
取初始向量 x0 0,0,0,0T ,迭代六次得结果见表 6.1. 从表 6.1 得到
x6 x
1.022 10 3
图表6.1
应用 SOR 方法(取 O=1.2)的迭代公式为
给定一个 n 阶矩阵 A aij ,记自然数集合 W 1,2,, n.若存在W 的 t 个
互不相交的子集 W1 ,W2 ,,Wt 使得 (1) (2)
W
k 1
t
k
W
对 i Wk ,若 i, j 有联系,则当 j i 时, j Wk 1 ;当 j i 时, j Wk 1 ,
1 ( ( ( x1( k ) (4 x2k 1) x3k 1) x4k 1) ) 5 1 ( ( ( x2k ) (12 x1( k ) x3k 1) x4k 1) ) 10
1 ( ( ( x3k ) (8 x1( k ) x2k ) x4k 1) ) 5
3
例1 方程组
5 x1 x 2 x3 x 4 4 x 10 x x x 12 2 3 4 x1 x 2 5 x3 x 4 8 x1 x 2 x3 10 x 4 34