拉格朗日插值实验报告.docxVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

实验名称:实验一拉格朗日插值

引言

我们在生产生活中常常会遇到这样的问题:某个实际问题中;函数fx在区间a;b上存在且连续;但却很难找到其表达式;只能通过实验和观测得到有限点上的函数表..显然;根据这些点的函数值来求其它点的函数值是非常困难的..有些情况虽然可以写出表达式;但结构复杂;使用不方便..所以我们总是希望根据已有的数据点或函数表来构造某个简单函数Px作为fx的近似值..插值法是解决此类问题的一种比较古老的、但却很常用的方法..它不仅直接广泛地应用于生产实际和科学研究中;而且也是进一步学习数值计算方法的基础..

实验目的和要求

运用Matlab编写三个.m文件;定义三种插值函数;要求一次性输入整张函数表;并利用计算机选择在插值计算中所需的节点..分别通过分段线性插值、分段二次插值和全区间上拉格朗日插值计算f0.15;f0.31;f0.47的近似值..已知函数表如下:

x

0.0

0.1

0.195

0.3

0.401

0.5

fx

0.39894

0.39695

0.39142

0.38138

0.36812

0.35206

算法原理与流程图

1原理

设函数y=在插值区间a;b上连续;且在n+1个不同的插值节点a≤x0;x1;…;xn≤b上分别取值y0;y1;…;yn..目的是要在一个性质优良、便于计算的插值函数类Φ中;求一简单函数Px;满足插值条件Pxi=yii=0;1;…;n;而在其他点x≠xi上;作为fx近似值..求插值函数Px的方法称为插值法..在本实验中;采用拉格朗日插值法..

=1\GB3①分段低次插值

当给定了n+1个点x0x1…xn上的函数值y0;y1;…;yn后;若要计算x≠xi处函数值fx的近似值;可先选取两个节点xi-1与xi使x∈xi-1;xi;然后在小区间xi-1;xi上作线性插值;即得

这种分段低次插值叫分段线性插值;又称折线插值..

类似地;我们可以选取距离x最近的三个节点xi-1;xi与xi+1;然后进行二次插值;即得

这种分段低次插值叫分段二次插值;又称分段抛物线插值..

=2\GB3②全区间上拉格朗日插值

对节点xii=0;1;…;n中任一点xk0≤k≤n;作一n次多项式lkx;使它在该点上的取值为1;在其余点xii=0;1;…;k-1;k+1;…;n上取值为零..对应于每一节点xkk=0;1;…;n;都能写出一个满足此条件的多项式;这样写出了n+1个多项式l0x;l1x;…;lnx;其中

由条件可得

于是我们可以得出如下的拉格朗日n次插值多项式对于全区间上的插值;n取函数表的长度

流程图

分段线性插值 分段二次插值全区间拉格朗日插值

程序代码及注释

1、分段线性插值

%分段线性插值

functiony=piece_linearx0;y0;x

%x0;y0为已知点;x为待求点

n=lengthx0;p=lengthy0;m=lengthx;

%n;p;m分别为x0;y0;x长度

ifn~=p

fprintfErrorPleaseinputagain\n;

%x0和y0长度不等时;报错

else

fori=1:m

z=xi;

sum=0.0;

l=0;

%给l赋初值;根据x的值确定l

ifzx01|zx0n

fprintfErrorx%disoutofrange\n;i;

break;

end

%当插值点超出范围时;报错

forj=2:n

ifzx0j

l=j;

end

ifl~=0

break;

end

end

%一旦l有非零值;则终止循环;选出合适的l

fork=l-1:l

a=1.0;

fors=l-1:l

ifs~=k

a=az-x0s/x0k-x0s;

end

end

sum=sum+y0ka;

end

yi=sum;

fprintfy%d=%f\nx1=%.3fy1=%.5f;x2=%.3fy2=%.5f\n\n;i;yi;x0l-1;y0l-1;x0l;y0l;

%输出插值结果和所需节点

end

end

end

2、分段二次插值

%分段二次插值

functiony=piece_squarex0;y0;x

%x0;y0为已知点;x为待求点

n=lengthx0

文档评论(0)

bookst + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档