资源描述:
《迭代法求线性方程组.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数学与计算科学学院实验报告实验项目名称迭代法求线性方程组所属课程名称数值方法A实验类型验证型实验日期2011.11.03班级学号姓名成绩一、实验概述:【实验目的】1、了解线性方程组Ax=b迭代法的一些基本理论思想;2、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点;3、学习Gauss-Seidel迭代法和松弛迭代法的使用方法;4、掌握迭代法的格式及收敛条件,判别迭代法收敛的基本方法及运用。【实验原理】1、Gauss–Seidel迭代法迭代格式:(若可逆),,,为初始向量(矩阵形式),(分量形式)2、弛迭代法(简称SO
2、R)迭代格式:在Seidel迭代公式中,=,。若在修正项前加上一个参数w,便得到松弛法的迭代公式:,,k=0,1,2,…将上式写成矩阵形式得,k=0,1,2,…其中w叫做松弛因子,当w>1时叫做超松弛,w<1时叫做低松弛。注:(1)w=1时就是Seidel迭代法;(2)适当选取松弛因子w,可加快收敛速度;(3)关于迭代格式(3),引进收敛速度概念:【实验环境】MicrosoftvisualC++6.0二、实验内容:【实验方案】1、明确实验要求任务:(1)用Gauss-Seidel迭代法求解下列方程组,当满足时结束迭代。(2)用松
3、弛迭代法(取)求解下列方程组,当满足时结束迭代,说明迭代的收敛性。并讨论初值的变化对收敛的影响。2、确定具体解决算法;3、选择一门可行计算机语言进行编程;4、对程序进行调试、改进和验证。【实验过程】(实验步骤、记录、数据、分析)1、打开MicrosoftvisualC++6.0编程软件;2、编写Gauss-Seidel迭代法的程序对第一个方程组进行运算,并显示出迭代结果;3、编写松弛因子为1.26的SOR方法对第二个方程组进行运算,并显示出迭代结果;4、分别对所编写的程序进行保存、调试、运行和改进,并保存结果图;5、分析结果数据
4、;【实验结论】(结果)1、由Gauss-Seidel迭代法求解的程序运行结果可知初值的选取影响迭代格式的收敛快慢。(1)取初值为(0,0,0),结果如下:(2)取初值为(1,1,0),结果如下:2、由SOR迭代法求解的程序运行结果可知初值的选取影响迭代格式的收敛快慢。(1)取初值为(1,1,1),结果如下:(2)取初值为(1,2,1),结果如下:SOR方法的收敛速度很快,但是就其自身而言,选取不同的w对于方程组得求解来说是非常不同的,选取适当的松弛因子会使方程收敛的速度提高很多。【实验小结】(收获体会)通过此次实验,我认识到初始
5、值对解线性方程组的重要性;了解线性方程组Ax=b迭代法的一些基本理论思想;学习了Gauss-Seidel迭代法和松弛迭代法的使用方法;掌握迭代法的格式及收敛条件,判别迭代法收敛的基本方法及运用。数学和编程的分析、处理能力也加强了。三、指导教师评语及成绩:评语评语等级优良中及格不及格1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强2.实验方案设计合理3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)4实验结论正确.成绩:指导教师签名:批阅日期:附录1:源程序//(1)Gauss-Seidel迭代法#include
6、ostream>#include#includeusingnamespacestd;#definen3intmain(){doubleA[n][n],B[n],b[n][n],m[n],X[n],Y[n],sum1,max;inti,j,count=1;cout<<"请输入矩阵A:"<>A[i][j];}cout<<"请输入矩阵B:"<>B[i];}cout<
7、<"请输入x初始值:"<>X[i];}for(i=0;i8、n;++j){sum1=sum1+b[i][j]*X[j];}Y[i]=B[i]-sum1;m[i]=fabs(Y[i]-X[i]);X[i]=Y[i];}max=m[0];for(inti=0;im[i])max=m[i];for(