您好,欢迎访问三七文档
数学与计算科学学院实验报告实验项目名称迭代法求线性方程组所属课程名称数值方法A实验类型验证型实验日期2011.11.03班级学号姓名成绩1一、实验概述:【实验目的】1、了解线性方程组Ax=b迭代法的一些基本理论思想;2、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点;3、学习Gauss-Seidel迭代法和松弛迭代法的使用方法;4、掌握迭代法的格式及收敛条件,判别迭代法收敛的基本方法及运用。【实验原理】1、Gauss–Seidel迭代法迭代格式:bxULDbAx)((若LD可逆)bLDUxLDx11)()(CGxxkk)()1(,,2,1,0kULDG1)(,bLDC1)(,)0(x为初始向量(矩阵形式)111)()1()1(1ijnijikjijkjijiikibxaxaax,),,2,1(ni(分量形式)2、弛迭代法(简称SOR)迭代格式:在Seidel迭代公式中,111)()1()1(1ijnijikjijkjijiikibxaxaax=)()(kikixx,)(kix11)()1(1ijnijikjijkjijiibxaxaa。若在修正项)(kix前加上一个参数w,便得到松弛法的迭代公式:)()()1(kikikixxx,ni,,2,1,k=0,1,2,…将上式写成矩阵形式得bLDxxkk1)()1()(,k=0,1,2,…])1[()(1UDLD其中w叫做松弛因子,当w1时叫做超松弛,w1时叫做低松弛。注:(1)w=1时就是Seidel迭代法;(2)适当选取松弛因子w,可加快收敛速度;(3)关于迭代格式(3),引进收敛速度概念:)(lnGR【实验环境】2MicrosoftvisualC++6.0二、实验内容:【实验方案】1、明确实验要求任务:(1)用Gauss-Seidel迭代法求解下列方程组,当满足4)()1(10kkxx时结束迭代。1105210241225321321321xxxxxxxxx(2)用松弛迭代法(取25.1)求解下列方程组,当满足5)()1(10kkxx时结束迭代,说明迭代的收敛性。054224521222321321321xxxxxxxxx并讨论初值的变化对收敛的影响。2、确定具体解决算法;3、选择一门可行计算机语言进行编程;4、对程序进行调试、改进和验证。【实验过程】(实验步骤、记录、数据、分析)1、打开MicrosoftvisualC++6.0编程软件;2、编写Gauss-Seidel迭代法的程序对第一个方程组进行运算,并显示出迭代结果;3、编写松弛因子为1.26的SOR方法对第二个方程组进行运算,并显示出迭代结果;4、分别对所编写的程序进行保存、调试、运行和改进,并保存结果图;5、分析结果数据;【实验结论】(结果)1、由Gauss-Seidel迭代法求解的程序运行结果可知初值的选取影响迭代格式的收敛快慢。(1)取初值为(0,0,0),结果如下:3(2)取初值为(1,1,0),结果如下:2、由SOR迭代法求解的程序运行结果可知初值的选取影响迭代格式的收敛快慢。(1)取初值为(1,1,1),结果如下:(2)取初值为(1,2,1),结果如下:4SOR方法的收敛速度很快,但是就其自身而言,选取不同的w对于方程组得求解来说是非常不同的,选取适当的松弛因子会使方程收敛的速度提高很多。【实验小结】(收获体会)通过此次实验,我认识到初始值对解线性方程组的重要性;了解线性方程组Ax=b迭代法的一些基本理论思想;学习了Gauss-Seidel迭代法和松弛迭代法的使用方法;掌握迭代法的格式及收敛条件,判别迭代法收敛的基本方法及运用。数学和编程的分析、处理能力也加强了。三、指导教师评语及成绩:评语评语等级优良中及格不及格1.实验报告按时完成,字迹清楚,文字叙述流畅,逻辑性强2.实验方案设计合理3.实验过程(实验步骤详细,记录完整,数据合理,分析透彻)4实验结论正确.成绩:指导教师签名:批阅日期:5附录1:源程序//(1)Gauss-Seidel迭代法#includeiostream#includecmath#includeiomanipusingnamespacestd;#definen3intmain(){doubleA[n][n],B[n],b[n][n],m[n],X[n],Y[n],sum1,max;inti,j,count=1;cout请输入矩阵A:endl;for(i=0;in;++i)for(j=0;jn;++j){cinA[i][j];}cout请输入矩阵B:endl;for(i=0;in;++i){cinB[i];}cout请输入x初始值:endl;for(i=0;in;++i){cinX[i];}for(i=0;in;++i){for(j=0;jn;++j){if(i==j)b[i][j]=0;elseb[i][j]=A[i][j]/A[i][i];}B[i]=B[i]/A[i][i];}cout迭代值表:endl;coutksetw(9)X1ksetw(9)X2ksetw(9)X3kendl;do{for(i=0;in;++i){sum1=0;for(j=0;jn;++j){sum1=sum1+b[i][j]*X[j];}Y[i]=B[i]-sum1;m[i]=fabs(Y[i]-X[i]);6X[i]=Y[i];}max=m[0];for(inti=0;in;i++)if(maxm[i])max=m[i];for(staticintk=1;k=count;++k){coutk;for(i=0;in;++i)//输出每次迭代的值{coutsetw(9)X[i];}coutendl;}++count;}while(max=1e-4);return0;}//(2)松弛迭代法#includeiostream#includecmath#includeiomanipusingnamespacestd;#definen3intmain(){doubleA[n][n],B[n],b[n][n],m[n],X[n],Y[n],sum1,max,w;inti,j,count=1;cout请输入矩阵A:endl;for(i=0;in;++i)for(j=0;jn;++j){cinA[i][j];}cout请输入矩阵B:endl;for(i=0;in;++i){cinB[i];}cout请输入x初始值:endl;for(i=0;in;++i){cinX[i];}cout请w:endl;cinw;for(i=0;in;++i){for(j=0;jn;++j){if(i==j)b[i][j]=0;elseb[i][j]=A[i][j]/A[i][i];}7B[i]=B[i]/A[i][i];}cout迭代值表:endl;coutksetw(9)X1ksetw(9)X2ksetw(9)X3kendl;do{for(i=0;in;++i){sum1=0;for(j=0;jn;++j){sum1=sum1+b[i][j]*X[j];}Y[i]=w*(B[i]-sum1)+(1-w)*X[i];m[i]=fabs(Y[i]-X[i]);X[i]=Y[i];}max=m[0];for(inti=0;in;i++)if(maxm[i])max=m[i];for(staticintk=1;k=count;++k){coutk;for(i=0;in;++i)//输出每次迭代的值{coutsetw(9)X[i];}coutendl;}++count;}while(max=1e-5);return0;}8附录2:实验报告填写说明1.实验项目名称:要求与实验教学大纲一致。2.实验目的:目的要明确,要抓住重点,符合实验教学大纲要求。3.实验原理:简要说明本实验项目所涉及的理论知识。4.实验环境:实验用的软、硬件环境。5.实验方案(思路、步骤和方法等):这是实验报告极其重要的内容。概括整个实验过程。对于验证性实验,要写明依据何种原理、操作方法进行实验,要写明需要经过哪几个步骤来实现其操作。对于设计性和综合性实验,在上述内容基础上还应该画出流程图、设计思路和设计方法,再配以相应的文字说明。对于创新性实验,还应注明其创新点、特色。6.实验过程(实验中涉及的记录、数据、分析):写明具体实验方案的具体实施步骤,包括实验过程中的记录、数据和相应的分析。7.实验结论(结果):根据实验过程中得到的结果,做出结论。8.实验小结:本次实验心得体会、思考和建议。9.指导教师评语及成绩:指导教师依据学生的实际报告内容,给出本次实验报告的评价。
本文标题:迭代法求线性方程组
链接地址:https://www.777doc.com/doc-2003680 .html