资源描述:
《用追赶法解三对角线方程组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、云南大学数学与统计学实验教学中心实验报告课程名称:数值计算方法学期:2011—2012学年第一学期成绩:指导教师:学生姓名:学生学号:实验名称:用追赶法解三对角线方程组实验编号:No.3实验日期:2011/10/29实验学时:3学院:数学与统计学院专业:数学与应用数学年级:2010级一、实验目的加强"追赶法"在解方程组中的应用,掌握多种不同的解线性方程组的解法以及编程的应用二、实验内容用追赶法解下列严格对角优势的三对角线方程组三、实验环境C语言,Turboc四.实验方法追赶法;其算法如下:(1)计算:(i=2,3,4……n-1)(2)解(i=2,3,4……,n)(3
2、)解(i=n-1,n-2,……,2,1)五、实验过程1实验步骤4(1)编程:根据所用算法及选用语言编出源程序(2).开机,打开所用语言系统输入所编源程序.(3).调试程序,修改错误直至能正确运行.(4).运行程序并输出计算结果.2关键代码及其解释#include#include#include/*预处理指令*/#defineMAX_n100/*宏定义,即最多可输入100阶方阵*/#definePRECISION0.000001/*精度*/voidSulutionOutput(floatx[],intn)/*输出方程
3、组的解*//*带分号的为声明*/voidTriDiagonalMatrixInput(floata[],floatb[],floatc[],floatf[],intn)/*三对角元素的输入*/intZ_G_method(floata[],floatb[],floatc[],floatf[],intn)/*三对角方程组求解—追赶法*/voidmain()/*主函数*/{intn;floata[MAX_n],b[MAX_n],c[MAX_n],d[MAX_n],f[MAX_n];/*定义数组*/printf("Inputn=");scanf("%d",&n);Tri
4、DiagonalMatrixInput(a,b,c,,d,f,n);/*以下三行均为调用函数声明*/Z_G_method(a,b,c,,d,f,n);SulutionOutput(f,n);}3调试过程1.本打算用递归调用,但是对那个不太熟悉,就改为用循环了;2.首先用do……while循环,出现语法错误太多;无法调试;后改为了do……while循环了;5.逐步调试修改程序,达到预期结果;六、实验总结1.遇到的问题及解决过程(1)对C语言掌握不太好,编写程序时语法错误较多.解决过程:耐心修改,逐步排除!(2)首先对牛顿法掌握不太好.解决过程:认真看书,问同学。2.产
5、生的错误及原因分析(1)Floatingpointerror:Domain.原因分析:编写程序时出现了语法错误(2)编写程序时没去分大小写,造成多处语法错误;原因分析:都怪自己粗心马虎3.体会和收获。无论干什么事都要认真,踏实!努力做好自己该做的。上课要认真听讲,专心学习,做作业才省力!各门课程之间相互联系,应搞好各科的学习。七:程序源代码:#include4#include#include#defineMAX_n100#definePRECISION0.000001//解输出voidSulutionOutput(
6、floatx[],intn){inti;for(i=1;i<=n;++i)printf("x[%d]=%f",i,x[i]);}//三对角方程组元素输入voidTriDiagonalMatrixInput(floata[],floatb[],floatc[],floatf[],intn){inti;printf("Inputb[1],c[1],f[1]:");scanf("%f%f%f",&b[1],&c[1],&f[1]);for(i=2;i7、f("%f%f%f%f",&a[i],&b[i],&c[i],&f[i]);}printf("Inputa[%d],b[%d],f[%d],f[%d]:",n,n,n,n);scanf("%f%f%f%f",&a[n],&b[n],&c[n],&f[n]);}//三对角方程组求解—追赶法intZ_G_method(floata[],floatb[],floatc[],floatf[],intn){inti;c[1]/=b[1];for(i=2;i