2011计算方法课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《计算方法》课程设计报告学生姓名:吴志强学号:0909290124学院:理学院班级:信计091班题目:拉格朗日插值及牛顿插值的通用程序指导教师:李鹏松职称:教授朱秀丽讲师2011年12月30日I一、摘要.............................................1二、应用计算方法的基本原理...........................21.拉格朗日插值法..................................21.1算法描述....................................21.2插值余项与误差估计..........................22.牛顿插值法......................................22.1算法描述....................................2三、例题的计算结果及误差分析.........................3四、总结及心得体会...................................4五、参考文献.........................................7六、附录程序.........................................71一、摘要本设计报告主要围绕拉格朗日插值及牛顿插值多项式展开。首先分别给出了拉格朗日和牛顿插值的基本原理。拉格朗日插值是在给出线性插值基函数)(xlk的基础上得出插值公式:nkknknknxxxxyxL011))(')(()()(利用插值基函数很容易求得拉格朗日插值多项式,公式结构紧凑,理论分析甚为方便,但是当差值节点增减时,全部差值基函数)(xli均要随之改变,给实际计算带来不便,而牛顿插值法很好的解决了这个问题。)()](,[)](,[)()(10100100nnnxxxxxxxfxxxxfxfxN由基本原理给出程序的算法描述并由此编写出通用程序。给出实例拉格朗日插值节点u=[01491625364964],带入程序得出结果:x1.32570.3814x-0.0604x0.0050x-0.0002x)(2345xL;牛顿插值节点x=[0.20.40.60.81.0],y=[0.98,0.92,0.81,0.64,0.38];代入程序得出结果:9800.01917.01042.18333.05208.0234xxxxNn通过所得出的插值多项式,代入具体数值,分别求出两种插值多项式的误差估计。并估算出误差分别为:则拉格朗日插值法绝对误差为0.0092;牛顿插值绝对误差0.000052。通过误差分析我们可以清楚的看到两种插值多项式的误差是可以接受的。最后我们对本次课程设计进行了总结,总结了程序的优缺点并对本次试验过程中遇到的问题及困难进行了解答,此外我们还写出了对本次课程设计的心得体会。2二、应用计算方法的基本原理1.拉格朗日插值法1.1算法描述拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。设)(xf是定义在区间[a,b]上的函数,又设1x,2x.....nx是[a,b]上的n个互不相同的点,可以先构造基函数)(xli(i=0,1,2......n)如下:jijnijjniiiiiixxxxxxxxxxxxxxxxxxxxxl0110in1i1-i0(1)且有ijijxlji10(2)显然),,2,1,0()(niyxLiin(3)满足(3)的插值多项式可表示为)()(0xlyxLknkkn(4)由)(xlk的定义知).....2,1,0()()(0njyxlyxLjknkkn,我们称)(xLn为拉格朗日插值多项式。同时引入记号))......()(()(101nnxxxxxxx,我们容易求得)())(()()(1101'nkkkkkkknxxxxxxxxx,于是我们可将公式(4)改写为)()()()(1'10knknnkknxxxxyxL。1.2插值余项与误差估计若)(xfn在[a,b]上连续,)(1xfn在(a,b)内存在,节点bxxxan10,)(xLn是满足(3)的插值多项式,对任何],[bax,插余项)()!1()()()(11xnfxLxfxRnnnn,),(ba,余项表达式只有在f(x)高阶导数存在时才能应用,在(a,b)具体位置不能具体给出,如果我们能求出)()}({max11xMxfnnbxa,那么插值多项式)(xLn的截断误差限为xwnMxRnnn11!12.牛顿插值法2.1算法描述利用插值基函数很容易求得拉格朗日插值多项式,公式结构紧凑,理论分析甚为方便,但是当差值节点增减时,全部差值基函数)(xli均要随之改变,给实际计算带来不便,而牛顿插值法很好的解决了这个问题。在这里我们先引入差商的概念:设有函数)(xf,3nxxx10,为一系列互不相等的点,我们称01102110],[],[],[xxxxxfxxxfxxxfkkkk为k阶差商这时我们可以求得xRxNxwxxxxfxxxxxxxfxxxxfxfxfnnnnnn1101010000,,,,,,,,其中)(xRn为牛顿插值的余项。其中)()](,[)](,[)()(10100100nnnxxxxxxxfxxxxfxfxN为牛顿均差插值多项式,)(],[)()()(10xxxxfxRxfxRnnnn为插值余项。三、例题的计算结果及误差分析一.拉格朗日插值法1.下列数据点的插值x1.511283056101132y67.82.53.27.66.37.5试用拉格朗日插值法分别求出插值多项式结果:9050.24829.22981.00126.00.0002x-)(2341xxxxL图像如下:图一例1拉格朗日插值多项式的图像误差分析:由所求得的插值多项式9050.24829.22981.00126.00.0002x-)(2341xxxxL例:将x=1.5代入,求得L(4)=6.199968精确解y(4)=6.2。则绝对误差为0.000012,相对误差为0.00016。一.牛顿插值法1.已知函数在下列各点的值为4x1.02345y0.980.920.810.640.38结果为:9800.00383.00442.00067.00008.0)(2344xxxxxP图像:图二例2牛顿插值多项式图像误差为:0.00025四、总结及心得体会总结:这次试验使我进一步认识到算法的重要性,为进一步掌握编程能力提供了一次很好的锻炼机会。在学习其他语言的基础上,进一步加强编程能力。(1)进一步熟悉了matlab编译环境。(2)完成一个程序的要经过设计,输入,编译,运行。如果出错,找出错误进行修改,然后再编译,编译成功后,再次看运行结果是否正确,如果结果不正确,则再重复以上步骤。(3)编写完程序后要有必要的注释,并且给出流程图,一个好的程序不但自己能够看懂应用,应该让其他人也能够看懂(4)算法分析一定要明确,算法是程序的灵魂。(5)一定要边调试边运行,在其中发现问题,从而解决相应的问题。(6)团结协作。(7)分块运行,一定要有层次与逻辑。(8)理论与实践结合的重要性。(9)不会的东西一定要请教老师和同学。心得体会:程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学5会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.通过这次课程设计,本人在多方面都有所提高。通过这次课程设计,综合运用本专业所学课程的理论和生产实际知识进行一次设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了数据结构课程所学的内容。为了程序的调试方便,以及清晰,我们以后要把每个功能尽可能都模块化,即利用调用函数;做完实验后,为了使运行结果清楚可现,我们后来自己对程序进行了优化,通过输入一些文字说明和行间距。本次实验不仅加深了我们对数据结构的理解而且也使我们巩固了对C语言掌握。在编写过程中,我们通过分部编写,将各部分融合等步骤最后完成实验,力求能够做到完美。通过此次实验我们意识到了自己的不足,以后我们会再接再厉,继续完善自己。通过对这一课题的设计和实现,我对matlab环境进行了深一步的了解,并逐渐开始熟练matlab环境的工作界面,以及对每一个快捷键的熟悉。并认识到,熟悉这些快捷键,极为便捷编写程序,但是还要更加熟悉。编程时要养成良好的风格,注意相同内容的缩进和对齐。这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。对我们而言,知识上的收获重要,精神上的丰收是可喜的。挫折是一份财富,经历是一份拥有。这次实际操作必将成为我们人生旅途上一个非常美好的回忆!回顾起此次课程设计,至今仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对于此次课程设计我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在6整整半个学期的日子里,学到的很多理论知识,在这次课程设计实习中更具体的体现了出来,在实践过程中,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学到的理论知识与实践相结合起来,从理论中得出结论,将结论辅助与理论,才能真正学到知识并写出有用的程序来为他人服务,更为社会服务,所以提高自己的实际动手能力和独立思考的能力是十分重要的。在设计的过程中遇到很多的问题,可以说得是困难重重,但在我们团队的共同努力下,在老师同学的大力帮助下取得了圆满的成功。在本次实践中,给我印象最为深刻的是在主函数与各函数调用编译过程中,刚开始的时候我的各个子程序都已经编辑成功,那么这最后的

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功