您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 雅克比迭代法、高斯-赛德尔迭代法
昆明理工大学(计算机算法)实验报告实验名称:常用算法及数值计算实验时间:2009年6月3日专业:电信071姓名:李春华学号:200711102118成绩:一、实验目的1.通过实验进一步掌握高斯消去法的基本思想;2.通过上机实验进一步掌握高斯消去法的计算步骤,并能灵活运用;3.通过对高斯消去法的调试练习,进一步体会他的特点;4.通过上机调试运行,逐步培养解决实际问题的编程能力。二、实习要求1.熟悉TurboC的编译环境;2.实习前复习雅可比迭代法、高斯—塞得儿迭代法的计算步骤。三、实习设备1.硬件设备:单机或网络环境下的微型计算机一台;2.软件设备:DOS3.3以上炒作系统,TurboC2.0编译器。四、实习内容雅可比迭代法与高斯—塞得儿迭代法用雅可比雅可比迭代法与高斯—塞得儿迭代法求解线性方程组Ax=b:要求:(1)写出程序的运行结果。(2)写出迭代次数。程序如下:1、雅可比迭代法#includestdio.h#includemath.h#definen3#defineMAX_N100#defineeps1e-6intyacobi(floata[n][n],floatb[n],floatx[n]){floatd,s,max;floaty[n];inti,j,k,flag;k=0;for(i=0;in;i++)x[i]=0.0;while(1){max=0.0;k++;for(i=0;in;i++){s=0.0;k++;for(j=0;jn;j++){if(j==i)continue;s=s+a[i][j]*x[j];}y[i]=(b[i]-s)/a[i][i];d=fabs(y[i]-x[j]);if(maxd)max=d;}if(maxeps){flag=1;break;}if(k=MAX_N){flag=0;break;}for(i=0;in;i++)x[i]=y[i];}return(flag);}voidzg_matric(floata[n][n],floatb[n]){inti,j;for(i=0;in;i++){for(j=0;jn;j++)printf(%10f,a[i][j]);printf(%12f,b[i]);printf(\n);}printf(\n);}main(){floata[][n]={{6,2-1},{1,4,-2},{-3,1,4}};floatb[n]={-3,2,4};floatx[n];inti,k;zg_matric(a,b);k=yacobi(a,b,x);if(k==1)for(i=0;in;i++)printf(x%d=%11.7f\n,i+1,x[i]);elseprintf(TheMethodisdisconvergent!\n);}结果如图:2、高斯—赛德尔迭代法#includestdio.h#includemath.h#definen3#defineMAX_N100#defineeps1e-6intseidel(floata[n][n],floatb[n],floatx[n]){floatd,s,max,temp;inti,j,k,flag;k=0;for(i=0;in;i++)x[i]=0.0;while(1){max=0.0;k++;for(i=0;in;i++){s=0.0;temp=x[i];for(j=0;jn;j++){if(j==i)continue;s=s+a[i][j]*x[j];}x[i]=(b[i]-s)/a[i][i];d=fabs(x[i]-temp);if(maxd)max=d;}if(maxeps){flag=1;break;}if(k=MAX_N){flag=0;break;}}return(flag);}voidzg_matric(floata[n][n],floatb[n]){inti,j;for(i=0;in;i++){for(j=0;jn;j++)printf(%10f,a[i][j]);printf(%12f,b[i]);printf(\n);}printf(\n);}voidmain(){floata[][n]={{6,2,-1},{1,4,-2},{-3,1,4}};floatb[n]={-3,2,4};floatx[n];inti,k;zg_matric(a,b);k=seidel(a,b,x);if(k==1)for(i=0;in;i++)printf(x%d=%11.7f\n,i+1,x[i]);elseprintf(TheMethodisdisconvergent!\n);}结果如下:五、思考题:(1)雅可比迭代法与高斯—塞得尔迭代法的基本思想是什么?答:雅可比迭代法基本思想为对于给定的线性方程组Ax=b,可以用不同的方法把它变为与之等价的,行为:x=Bx+f的方程组。选定初值,在反复的迭代中校正方程组根的近似值,并在此过程中求取符合计算精度要求的方程组的近似值。高斯—塞得儿迭代法的基本思想与雅可比迭代法相似。只是在雅可比迭代法中,每次迭代时只用到上次的值,尔高斯-塞得儿迭代法中充分利用了最新得到的值。(2)观察右端项对迭代结果是否有影响?答:它由消元与回代两个过程组成。
本文标题:雅克比迭代法、高斯-赛德尔迭代法
链接地址:https://www.777doc.com/doc-5647925 .html