雅可比迭代法和高斯超松弛迭代
雅可比迭代法和高斯-赛赛赛赛赛赛赛赛赛赛赛赛德迭代法以及超松弛迭代
k对对对对对对对对对对对对对对对对对对于定的方程用下式逐代入求近似解的方法称迭代法。如x步(当)的极限存在,此极限即
方程的真正解,此迭代法收,否称迭代法收。对对对对对对对对对对对对对对对对对对对对对对1、雅可比,Jacobi,迭代法
对对有方程
Ax=b (56)
其展形式对对对对
(57)系数矩对A对对对对非奇异,且(i=1-n)A可分解对
A,D,A ,58,其中:0
改写性方程,对对对对对对57)式,将第i个方程,i=1~n,
示对x的表达式:i
,59,
改写后的,57,式的矩表达式:对对对对对对
,60,其中很容易看出,56,式和,60,式系数矩对对对对对A与及自由列对对对b与之存在如下系对对对对对对对
,61,用迭代法解,60,式,其迭代公式对
,62,
初始向量对x。此法称雅可比迭代法,称雅可比迭代法的迭代矩。对对对对对对对对对对对对对k对迭代次数。雅可比0
迭代法的分量形式对
,63,
雅可比迭代法分量形式,63,式也可改写对
,64,
,64,式更方便于程求解。对对对对对
雅可比迭代法公式,迭代思路明确。对对对对对对对对对对迭代一次只需算n每个方程的向量乘法,程序对kk+1制需二个数分存放对对对对对对对对对对对x和x便可此迭代求解。对对对对对对对对
2、高斯,德,赛赛赛赛Gauss-seidel,迭代法k+1k由雅可比迭代法可知,在算对对x的程中,采用的都是上一迭代对对对对的果x步。考察其算对对k+1对对对对对对对对对程,然在算新分量x对对对对对对对对对对对对对对对,已算得到了新的分量,。有理i
由新算出来的分量可能比上次迭代得到的分量有对对对对对对对对对对对对对对对对对对对对对对对所改善。希望充分利用新算出来的分量以提高迭代解法的效对对对对对对对对对对对对对对对对
率,就是高斯,德迭代法,称对对对对对对对对对对对对对对对G
S迭代法,,对对64,式行改可以得到对对对对对对对对G
S迭代法的分量形式
,65,
G
S迭代法的分量形式亦可表示对
,66,
(65)式也可写成矩形式。方程的系数对对对对对对对对对对A在,58,式基上可一对对对对对对对对对对对分解,若将步A对对分0LU解一个下三角对对对对对对对A和一个上三角对A ,系数矩的分解可表达对对对对对对对对对对对对对00
,67,
其中:
,68,
,65,式可写成矩形式对对对
按向量的迭代次数并可得对对对对
若,D,,的逆存在,有对对
高斯,德迭代的矩形式可表达对对对对对对对对对对对对对对
,69,
高斯,德迭代法对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对迭代的算量与雅可比迭代相当,但在算机行算,只需存放每步x一个数。对对?用迭代法求解要注意迭代法的收性对对对对对对对对对对对。无是用雅可比迭代法或高斯对对对对对对对对对对对对-对对对对德迭代法都存在解的收,甚至有的性方程,用雅可比迭代法解是收的,而用高斯对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对-对德迭代法解却是散的。反之亦然。对对对对对对对对对对对对对对对对
当性方程对对对对对(56)中的系数矩对A(n对对矩)对对对对对对对对对对格角矩,即A的一行角元素每对对对对的都格大于同行其它元素之和对对对对对对对对对对对对对对对对:
对对对对对对对对对对对对对可明上述二迭代法收。
定理 对对对对对对对对对对如果性方程的系数矩A对对对对对对对对对对对对对对对对对对格角矩,求解性方程Ax=b的雅可比迭代法和高斯-对对对对对对对对对德迭代法均收。
有限元法的求解方程对对对对对对对对Ka=P中,系数矩对K具有主元占的特点,但却不能对对对对对对对对对保是格角矩,因此采用雅可比迭代法要注意解的收。高斯对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对-对对德迭代法的收性要求在下一超松弛迭代法一并。对对对对对对对对对对对对对对对对对对对对
2、逐次超松弛迭代法
逐次超松弛迭代法(Successive Over Relaxation Merhod,对称SOR法)是高斯-对对对对德迭代法的一加速收的方法。是大型稀疏矩性方程的有对对对对对对对对对对对对对对对对对对对对对对对
效解法之一。首先用另一形式一下迭代程。于对对对对对对对对对对对对对对对对(56)式的性方程对对对对对
Ax=b
当系数矩主元对对对a=1(I=1,2,..,n)对对对对对将式中系数矩分解ii
,70,
对可,56,式的等价方程对
,71,
它的迭代公式对
kkk当行了对对对k次迭代得到x后,x一般地与真解x对对仍存在差异。如何改x得到下一次迭代k1kk,的果对对x,可以引入x的剩余向量r
,73,
此,迭代公式,对对对对对对对72,可表示对
,74,
k1k,由此可用迭代法得到逐次改的解对对对对对对对对对对对对对对x,赛赛上是用k次迭代后的剩余向量r来改赛k解的第k次近似r。因此可以引一个加速迭代的模式来改迭代法。令对对对对对对对对对对对对对对对对对对,75,
其中ω称松弛因子。对对对对对对
式,75,是迭代公式,74,的一个改,可以松弛因子对对对对对对对对对对ω加速迭代程的收。对对对对对式,75,的分量形式对
,76,
若上述改的迭代公式,按高斯,德迭代法尽量利对对对对对对对对对对对对对对对对对对对对对对对对
用最新迭代得到的分量的原,又可得到新的迭代公式对对对对对对对对对对对对
,77,
当性方程的系数矩对对对对对对对对对对A具有非零主元,a?0,i=1,2,3,…n,的特点,可以得到主元对对对对对对对对对1的ii
方程形式对对对
,78,
此迭代公式,对对对对对对77,可改写对
,79,
迭代公式,79,式称松弛因子迭代法。当对对对对对对对对对对对 =1,,79,式就是高斯-对对对对对对对德迭代法,当ω<1对,79,式称低松弛法,对对对对对对当ω,1赛,79,式称超松弛法赛赛赛赛赛,即SOR方法。由于加速迭代收一般取对对对对对ω,1,因此,79,式一般称超松弛迭代法,对对对对对对对对SOR方法,。可以明如果性方程的系数矩赛赛赛赛赛赛赛赛赛赛赛赛赛赛A赛赛赛称正定矩。ω的取对对0,ω,2对对对对,解方程的对对SOR方法一定收。由于有限元法的求解方程其系数对对对对对对对对对对对对对对对对对矩具有称、正定的特点,因此对对对对对对对对对对对对对对SOR方法是迭代求解的一常方法。对对对对对对用超松弛迭代法求解,超松弛因子,适当的超松弛因子将会加快收速度。对对对对对对对对对对对对对对对对对对对对对对对对对对对对超松弛因子一般可取1.2左右。
超松弛代法和高斯-对对对对对对对对对对对对对对对对对对对对对对对对德迭代要于雅可比迭代。而由于了超松弛因子ω,一般超松弛迭代效率要高于高斯,德迭代。超松弛因子无法事先确定最对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对对,可在迭代程中根据收速度行整。
用超松弛迭代法求解思路明确,程,存迭代解对对对对对对对对对对x只需一个数。但需注对对对对对k
意超松弛因子的。对对对
在用迭代法求解有限元方程,仍需按系数矩对对对对对对对对对(对对度矩)在算机内的存方式,对对对对对对对对对与直接解法中的高斯消去法和三角分解法所的相似,考系数矩特点,修改对对对对对对对对对对对对对对对对对(79)式中元素的下及迭代对对对对对对对对对对对对对对对对对及的元素。如采用雅可比迭代或高斯涉-对对对对对对对对对德迭代,也作此修正。者可以行修改并。对对对对对对对对对对对对
附程序
#include
#include
#include
using namespace std;
#define kk 50 //定最大方程元数对对对对对对对
#define exp 1e-5//定束限对对对对对对
int n,ll,hh,i,j;
double A[kk][kk],x[kk][kk],b[kk],y[kk],a[kk],z[kk],m,nn,d,e=1,w;
void main()
{
cout<<"
**********************************************************************"<>n;
cout<<"对对对入方程系数矩:"<<"\n";
for(i=0;i>A[i][j];
cout<<"对对对对对入右向量:"<<"\n";
for(i=0;i>b[i];
//*******************************判断是否角占对对对对*************************
for(i=0;id)
{
cout<<"对对对对对对对对对对对方程不角占,迭代不收"<>hh;
if(hh!=1)
goto bb;
else exit(1);
}
}
//********************************对对算出迭代矩*************************
for(i=0;i>ll;
//*****************************对对迭代初***********************************
for(i=0;iexp)
{
for(i=0;iexp)
{
for(i=0;i>w;
while(e>exp)
{
for(i=0;i