高斯-赛德尔迭代

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2012-2013(1)专业课程实践论文高斯-赛德尔迭代张禹廷,0818180111,R数学08-1班一、算法理论高斯-赛德尔迭代是计算)1(kx的第i个分量)1(kix的方法,利用了已经计算出得最新分量)1,...,2,1()1(ijxkj.高斯-赛德尔迭代法可以看作雅克比迭代法的一种改进.高斯-赛德尔迭代法没迭代一次只需计算一次矩阵与向量的乘法选取分裂矩阵M为A的下三角部分,即选取LDM(下三角矩阵),NMA,于是得到解bAx的高斯-赛德尔(Gauss-Seidel)迭代法,...,1,0,,)()1()0(kfBxxxkk初始向量(1)其中.)(,)()(111bLDfGULDALDIB称ULDG1)(为解bAx的高斯-赛德尔迭代法的迭代矩阵.下面给出高斯-赛德尔迭代法的分量计算公式.记Tknkikkxxxx),...,,...,()()()(1)(由(1)式有,)()()1(bUxxLDkk或,)()1()1(bUxLxDxkkk即111)()1()1(.,...,,2,1,ijnijkjijkjijikiiinixaxabxa于是解bAx的高斯-赛德尔迭代法计算公式为.,1,0,,2,1/)(),,(1)(11)1()1()0()0(1)0(kniaxaxabxxxxiinijkjijijkjiiikiTn二、算法框图开始输入数据.,...,2,1/)(niayabyiiijjijii?max1iinixy1knixxyiii,...,2,1)0(?Nk输出错误niyxkkii,...,2,11nyyy,...,,21输出结束三、算法程序#includestdio.h#includemath.h#definem3floata[m][m];floatc[m];voidgaosi();voidmain(){inti,j;floatx[m],x1[m],eps[m];floats=0;floatt=0;intp=1;intq=1;intk=0;floateps1;gaosi();for(i=0;i=m-1;i++){for(j=0;j=m-1;j++){s=float(s+fabs(a[i][j]));t=float(t+fabs(a[j][i]));}q=q&&(s2*fabs(a[i][i]));p=p&&(t2*fabs(a[i][i]));s=0;t=0;}if((p+q)==0)printf(ERROR!);else{for(i=0;i=m-1;i++){x[i]=0;x1[i]=0;}do{eps1=x[0]-x1[0];for(i=0;i=m-1;i++){for(j=0;j=m-1;j++)s=s+a[i][j]*x[j];x[i]=(c[i]+a[i][i]*x[i]-s)/a[i][i];s=0;eps[i]=float(fabs(x[i]-x1[i]));x1[i]=x[i];eps1=(eps1eps[i])?eps1:eps[i];printf(x%d=%f,i,x[i]);printf(\n);}k=k+1;}while(eps11e-3);printf(迭代%d次,k);}}voidgaosi(){inti,j;floatb[m*m];printf(请输入一个矩阵a:\n);for(i=0;i=m-1;i++){for(j=0;j=m-1;j++){scanf(%f,&b[j+i*m]);a[i][j]=b[j+i*m];}}printf(请输入矩阵b\n);for(i=0;i=m-1;i++)scanf(%f,&c[i]);}四、算法实现例1.利用高斯-赛德尔法迭代解方程3612333311420238321321321xxxxxxxxx解:运行程序(1)显示出请输入一个矩阵a:输入12331114238,回车。(2)显示出请输入矩阵b:输入363320,回车。(3)显示结果:2.5000000x090909.21x852273.12x2.8210230x2.1425621x1.7591042x2.8636850x2.1185791x1.7544342x2.8558590x2.1210001x1.7557852x2.8564280x2.1209161x1.7556642x例2.利用高斯-赛德尔法迭代解方程69228281027321321321xxxxxxxxx解:运行程序(1)显示出请输入一个矩阵a:输入922281217,回车。(2)显示出请输入矩阵b:输入6810,回车。(3)显示结果:1.4285710x0.8214291x0.1666672x1.2636060x0.8003831x0.2080032x1.2548020x0.7911491x0.2120112x1.2549760x0.7901251x0.2122002x1.2550680x0.7900671x0.2121922x

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功