资源描述:
《用高斯-赛德尔迭代法解下列线性方程组.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、云南大学数学与统计学实验教学中心实验报告课程名称:数值计算方法学期:2011—2012学年第一学期成绩:指导教师:学生姓名:学生学号:实验名称:用高斯-赛德尔迭代法解下列线性方程组实验编号:No.4实验日期:2011/11/6实验学时:3学院:数学与统计学院专业:数学与应用数学年级:2010级一、实验目的加强"追赶法"在解方程组中的应用,掌握多种不同的解线性方程组的解法以及编程的应用二、实验内容用高斯-赛德尔迭代法解下列线性方程组,要求当
2、
3、
4、
5、时迭代终止。三、实验环境C语言,Turboc四.实验方法高斯—赛德尔迭代法:在雅可比迭代中,求是时是用的所有分量来参加计算
6、的,而在计算的第个分量时,已经计算好前面个分量。设想方法收敛,第次的分量比第次的分量更接近于真实值,为了加速收敛,在计算的第个分量时,所用的的前个分量换成新算好的值,即用来计算,这就是高斯—赛德尔迭代思想。而在雅可比方法基础上用赛德尔迭代,称为高斯—赛德尔方法。(1)任取初始向量,由如下公式计算的第个分量:此种迭代法称为高斯—赛德尔方法。(2)高斯—赛德尔方法的分量形式:令则注:高斯—赛德尔方法产生的向量列收敛,记,则,即为的解。高斯-赛德尔迭代法;其算法如下:(1)inputn,A,b,,N(2)(3)k1(4)(5)err0(6)fori=1ton,do(7~9
7、)(7)XIx[i](9)if(err<
8、XI-x[i]
9、)thenerr=
10、XI-x[i]
11、(10)If(err<ε)thenoutput(x[i],i=1,2,3...,n),stop(11)kk+1(12)Output("Maximumnumberofiterationsexceeeded."),stop五、实验过程1实验步骤(1)编程:根据所用算法及选用语言编出源程序(2).开机,打开所用语言系统输入所编源程序.(3).调试程序,修改错误直至能正确运行.(4).运行程序并输出计算结果.2关键代码及其解释3调试过程根据所给题目的基本信息和C语言,编写出源程序,
12、程序编号后,出现了很多的语法错误,再对所出现的错误进行改正,直至编译,连接后显示无错误。运行结果:x[0]=0.999997x[1]=1.999997x[2]=0.999999x[3]=1.999998x[4]=0.999998x[5]=1.999999六、实验总结1.遇到的问题及解决过程2.产生的错误及原因分析(1)Floatingpointerror:Domain.原因分析:编写程序时出现了语法错误(2)编写程序时没去分大小写,造成多处语法错误;原因分析:都怪自己粗心马虎3.体会和收获。无论干什么事都要认真,踏实!努力做好自己该做的。上课要认真听讲,专心学习,做
13、作业才省力!各门课程之间相互联系,应搞好各科的学习。七:程序源代码:#include"stdio.h"#include"math.h"#include"alloc.h"GaussSeidel(n,a,b,x)intn;double*a,*b,*x;{inti,j;doublet,u,m=0,eps;while(1){eps=0;for(i=0;i
14、eps)eps=fabs(t-u);}if(eps<1e-5)return1;//满足题目所要求的循环条件}}main(){inti;doublea[6][6]={{4,-1,0,-1,0,0},{-1,4,-1,0,-1,0},{0,-1,4,0,0,-1},{-1,0,0,4,-1,0},{0,-1,0,-1,4,-1},{0,0,-1,0,-1,4}},b[6]={0,5,0,6,-2,6},x[6]={0,0,0,0,0,0};//输入具体矩阵的值GaussSeidel(6,a,b,x);for(i=0;i<6;i++)printf("x[%d]=%f"
15、,i,x[i]);}八.教师评语: