计算方法课程设计报告(DOC).doc

上传人:聆听****声音 文档编号:352966 上传时间:2023-04-29 格式:DOC 页数:10 大小:274.50KB
下载 相关 举报
计算方法课程设计报告(DOC).doc_第1页
第1页 / 共10页
计算方法课程设计报告(DOC).doc_第2页
第2页 / 共10页
计算方法课程设计报告(DOC).doc_第3页
第3页 / 共10页
计算方法课程设计报告(DOC).doc_第4页
第4页 / 共10页
计算方法课程设计报告(DOC).doc_第5页
第5页 / 共10页
计算方法课程设计报告(DOC).doc_第6页
第6页 / 共10页
计算方法课程设计报告(DOC).doc_第7页
第7页 / 共10页
计算方法课程设计报告(DOC).doc_第8页
第8页 / 共10页
计算方法课程设计报告(DOC).doc_第9页
第9页 / 共10页
计算方法课程设计报告(DOC).doc_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

计算方法课程设计报告(DOC).doc

《计算方法课程设计报告(DOC).doc》由会员分享,可在线阅读,更多相关《计算方法课程设计报告(DOC).doc(10页珍藏版)》请在冰点文库上搜索。

计算方法课程设计报告(DOC).doc

《计算方法》课程设计报告

学生姓名:

吴志强

学号:

0909290124

学院:

理学院

班级:

信计091班

题目:

拉格朗日插值及牛顿插值的通用程序

指导教师:

李鹏松职称:

教授

朱秀丽讲师

2011年12月30日

一、摘要 1

二、应用计算方法的基本原理 2

1.拉格朗日插值法 2

1.1算法描述 2

1.2插值余项与误差估计 2

2.牛顿插值法 2

2.1算法描述 2

三、例题的计算结果及误差分析 3

四、总结及心得体会 4

五、参考文献 7

六、附录程序 7

一、摘要

本设计报告主要围绕拉格朗日插值及牛顿插值多项式展开。

首先分别给出了拉格朗日和牛顿插值的基本原理。

拉格朗日插值是在给出线性插值基函数的基础上得出插值公式:

利用插值基函数很容易求得拉格朗日插值多项式,公式结构紧凑,理论分析甚为方便,但是当差值节点增减时,全部差值基函数均要随之改变,给实际计算带来不便,而牛顿插值法很好的解决了这个问题。

由基本原理给出程序的算法描述并由此编写出通用程序。

给出实例拉格朗日插值节点u=[01491625364964],带入程序得出结果:

;牛顿插值节点x=[0.20.40.60.81.0],y=[0.98,0.92,0.81,0.64,0.38];代入程序得出结果:

通过所得出的插值多项式,代入具体数值,分别求出两种插值多项式的误差估计。

并估算出误差分别为:

则拉格朗日插值法绝对误差为0.0092;牛顿插值绝对误差0.000052。

通过误差分析我们可以清楚的看到两种插值多项式的误差是可以接受的。

最后我们对本次课程设计进行了总结,总结了程序的优缺点并对本次试验过程中遇到的问题及困难进行了解答,此外我们还写出了对本次课程设计的心得体会。

二、应用计算方法的基本原理

1.拉格朗日插值法

1.1算法描述

拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。

设是定义在区间[a,b]上的函数,又设,.....是[a,b]上的n个互不相同的点,可以先构造基函数(i=0,1,2......n)如下:

(1)

且有

(2)

显然(3)

满足(3)的插值多项式可表示为

(4)

由的定义知,我们称为拉格朗日插值多项式。

同时引入记号,我们容易求得,于是我们可将公式(4)改

写为。

1.2插值余项与误差估计

若在[a,b]上连续,在(a,b)内存在,节点,

是满足(3)的插值多项式,对任何,插余项,,余项表达式只有在f(x)高阶

导数存在时才能应用,在(a,b)具体位置不能具体给出,如果我们能求出,那么插值多项式的截断误差限为

2.牛顿插值法

2.1算法描述

利用插值基函数很容易求得拉格朗日插值多项式,公式结构紧凑,理论分析甚为方便,但是当差值节点增减时,全部差值基函数均要随之改变,给实际计算带来不便,而牛顿插值法很好的解决了这个问题。

在这里我们先引入差商的概念:

设有函数,为一系列互不相等的点,我们称为k阶差商这时我们可以求得

其中为牛顿插值的余项。

其中为牛顿均差插值多项式,为插值余项。

三、例题的计算结果及误差分析

一.拉格朗日插值法

1.下列数据点的插值

x

1.5

11

28

30

56

101

132

y

6

7.8

2.5

3.2

7.6

6.3

7.5

试用拉格朗日插值法分别求出插值多项式

结果:

图像如下:

图一例1拉格朗日插值多项式的图像

误差分析:

由所求得的插值多项式

例:

将x=1.5代入,求得L(4)=6.199968精确解y(4)=6.2。

则绝对误差为0.000012,相对误差为0.00016。

一.牛顿插值法

1.已知函数在下列各点的值为

x

1.0

2

3

4

5

y

0.98

0.92

0.81

0.64

0.38

结果为:

图像:

图二例2牛顿插值多项式图像

误差为:

0.00025

四、总结及心得体会

总结:

这次试验使我进一步认识到算法的重要性,为进一步掌握编程能力提供了一次很好的锻炼机会。

在学习其他语言的基础上,进一步加强编程能力。

(1)进一步熟悉了matlab编译环境。

(2)完成一个程序的要经过设计,输入,编译,运行。

如果出错,找出错误进行修改,然后再编译,编译成功后,再次看运行结果是否正确,如果结果不正确,则再重复以上步骤。

(3)编写完程序后要有必要的注释,并且给出流程图,一个好的程序不但自己能够看懂应用,应该让其他人也能够看懂

(4)算法分析一定要明确,算法是程序的灵魂。

(5)一定要边调试边运行,在其中发现问题,从而解决相应的问题。

(6)团结协作。

(7)分块运行,一定要有层次与逻辑。

(8)理论与实践结合的重要性。

(9)不会的东西一定要请教老师和同学。

心得体会:

程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。

学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.

通过这次课程设计,本人在多方面都有所提高。

通过这次课程设计,综合运用本专业所学课程的理论和生产实际知识进行一次设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了数据结构课程所学的内容。

为了程序的调试方便,以及清晰,我们以后要把每个功能尽可能都模块化,即利用调用函数;

做完实验后,为了使运行结果清楚可现,我们后来自己对程序进行了优化,通过输入一些文字说明和行间距。

本次实验不仅加深了我们对数据结构的理解而且也使我们巩固了对C语言掌握。

在编写过程中,我们通过分部编写,将各部分融合等步骤最后完成实验,力求能够做到完美。

通过此次实验我们意识到了自己的不足,以后我们会再接再厉,继续完善自己。

通过对这一课题的设计和实现,我对matlab环境进行了深一步的了解,并逐渐开始熟练matlab环境的工作界面,以及对每一个快捷键的熟悉。

并认识到,熟悉这些快捷键,极为便捷编写程序,但是还要更加熟悉。

编程时要养成良好的风格,注意相同内容的缩进和对齐。

这样做,可以使程序代码出错的情况下,可以快速并且便捷的查找到错误的行,利于很好的修改。

通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。

善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高,生活就是这样,汗水预示着结果也见证着收获。

劳动是人类生存生活永恒不变的话题。

通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。

对我们而言,知识上的收获重要,精神上的丰收是可喜的。

挫折是一份财富,经历是一份拥有。

这次实际操作必将成为我们人生旅途上一个非常美好的回忆!

回顾起此次课程设计,至今仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对于此次课程设计我感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,学到的很多理论知识,在这次课程设计实习中更具体的体现了出来,在实践过程中,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学到的理论知识与实践相结合起来,从理论中得出结论,将结论辅助与理论,才能真正学到知识并写出有用的程序来为他人服务,更为社会服务,所以提高自己的实际动手能力和独立思考的能力是十分重要的。

在设计的过程中遇到很多的问题,可以说得是困难重重,但在我们团队的共同努力下,在老师同学的大力帮助下取得了圆满的成功。

在本次实践中,给我印象最为深刻的是在主函数与各函数调用编译过程中,刚开始的时候我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。

老天不会让我们太过顺利,合起来的程序怎么都运行不了,不停的出错再出错,似乎错误无穷无尽,总也更正不完,他在这最后的时刻给我设置的障碍,在考验着我们的耐心和能力,在这个问题的解决上。

这是一个痛苦的过程,并且是一个快乐的结果。

风雨过后会有彩虹。

其实做了这么多回的课程设计,每回都差不多。

调试过程是很痛苦的,每次听到那“嘟…”听到后面总是令人崩溃的。

但是听多了,最终可以运行的时候,海阔天空的感觉是很爽的。

如果不经历那个痛苦的过程,是不会体会到到底有多快乐的。

就像生活当中你一直在吃糖,你并不会觉得这糖有多甜,如果你之前吃苦涩的东西,再吃糖,会有很甜的感觉。

后者就应该整个过程的形象的比喻了。

我们设计的东西要符合实际情况才有生命力,才有应用价值。

不然就是简单的一个程序,像一个没有水分的橙子,吃不了但是扔了又可惜。

鸡肋——食之无味,去之可惜。

没有应用价值的东西设计出来也没有人买,难道自己留作纪念?

整个过程应该思路清晰,知道自己做完这一步下一步应该做什么。

不然就会像一个迷失在大海中的小舟。

驶向何方,彼岸在哪里?

都不得而知。

只有思路清晰了。

想尽所有的办法最终到达目的。

最后相信自己会成功的,才可以能成功,自己都认为自己不行,别人就更加认为你不行了。

坚定信念,一定会成功的,皇天不会辜负有心人的。

一方面,知识的运用。

在课堂上学习的知识往往是零散的,很难体会到一个整体的系统,做课程设计是一个整体的检验。

无疑课设是对知识的良好检验。

另一方面,问题解决能力。

面对具体的问题,使用特殊的工具,解决其问题。

最后,团队精神。

在做课设中,团队能力是完成任务的核心要素,为了达到目标,团队精神应该是组员具备的良好素质。

在工作中,大家应相互帮组,相互协作。

放下隔阂,发挥强项,明确任务。

通过这次课程设计实习,我从中学到了很多,也真正领悟到了“态度决定一切”这句话的真正含义。

首先这次课程设计使我懂得了理论与实际相结合的重要性。

只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,把理论付诸实际行动,从实践中得出结论,才能更加深刻的理解书本所学知识,从而提高自己的实际动手能力和独立思考的能力。

在这里我还要特别感谢李老师和朱老师认真细致的讲解。

我一定会再接再厉,不让大学四年荒废,我相信自己的实力!

五、参考文献

[1]李庆扬,王能超,易大义.数值分析(第5版).北京:

清华大学出版社,2005

[2]李庆扬,关治,白峰杉.数值计算原理.北京:

清华大学出版社,2000

[3]李海,邓樱.《MATLAB程序设计教程》.北京:

高等教育出版社,2002

六、附录程序

拉格朗日插值:

function[c,l]=lageangri(u,z)

u=[1.21022.3305098.2120];

z=[56.21.93.27.66.37.5];

w=length(u);%测量u的长度

n=w-1;

l=zeros(w,w);%生成w阶全零矩阵

fork=1:

n+1%生成插值多项式

v=1;

forj=1:

n+1

ifk~=j

v=conv(v,poly(u(j)))/(u(k)-u(j));%生成插值基函数

end

end

l(k,:

)=v;

end

c=z*l;

t=0:

1:

64;

p=interp1(u,z,t,'polyfit');

plot(u,z,'bo-',t,p,'g--','linewidth',2);

legend('样本','拉格朗日多项式插值

牛顿插值:

function[a,b]=niudunchazhi(x,y)

x=[0.30.50.70.91.1];

y=[0.96,0.90,0.82,0.63,0.35];

n=length(x);%测量x的长度

b=zeros(n,n);%生成n阶全零矩阵

b(:

1)=y;

forj=2:

n

fork=j:

n

b(k,j)=(b(k,j-1)-b(k-1,j-1))/(x(k)-x(k-j+1));%生成均差表

end

end

a=b(n,n);

fork=(n-1):

-1:

1%生成牛顿插值多项式

a=conv(a,poly(x(k)));%多项式乘积生成x-k

m=length(a);

a(m)=a(m)+b(k,k);

w=b(n+1,n+1)

end

t=0:

0.001:

1;

p=interp1(x,y,t,'polyfit');

plot(x,y,'bo-',t,p,'g--','linewidth',2);

legend('样本','4次牛顿插值');

7

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2