- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用标准文案
文档大全
实验名称: 实验一 拉格朗日插值
引言
我们在生产生活中常常会遇到这样的问题:某个实际问题中,函数f(x)在区间[a,b]上存在且连续,但却很难找到其表达式,只能通过实验和观测得到有限点上的函数表。显然,根据这些点的函数值来求其它点的函数值是非常困难的。有些情况虽然可以写出表达式,但结构复杂,使用不方便。所以我们总是希望根据已有的数据点(或函数表)来构造某个简单函数P(x)作为f(x)的近似值。插值法是解决此类问题的一种比较古老的、但却很常用的方法。它不仅直接广泛地应用于生产实际和科学研究中,而且也是进一步学习数值计算方法的基础。
实验目的和要求
运用Matlab编写三个.m文件,定义三种插值函数,要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的节点。分别通过分段线性插值、分段二次插值和全区间上拉格朗日插值计算f(0.15),f(0.31),f(0.47)的近似值。已知函数表如下:
x
0.0
0.1
0.195
0.3
0.401
0.5
f(x)
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。目的是要在一个性质优良、便于计算的插值函数类Φ中,求一简单函数P(x),满足插值条件P(xi)=yi(i=0,1,…,n),而在其他点x≠xi上,作为f(x)近似值。求插值函数P(x)的方法称为插值法。在本实验中,采用拉格朗日插值法。
= 1 \* GB3 ①分段低次插值
当给定了n+1个点x0x1…xn上的函数值y0,y1,…,yn后,若要计算x≠xi处函数值f(x)的近似值,可先选取两个节点xi-1与xi使x∈[xi-1,xi],然后在小区间[xi-1,xi]上作线性插值,即得
这种分段低次插值叫分段线性插值,又称折线插值。
类似地,我们可以选取距离x最近的三个节点xi-1,xi与xi+1,然后进行二次插值,即得
这种分段低次插值叫分段二次插值,又称分段抛物线插值。
= 2 \* GB3 ②全区间上拉格朗日插值
对节点xi(i=0,1,…,n)中任一点xk(0≤k≤n),作一n次多项式lk(x),使它在该点上的取值为1,在其余点xi(i=0,1,…,k-1,k+1,…,n)上取值为零。对应于每一节点xk(k=0,1,…,n),都能写出一个满足此条件的多项式,这样写出了n+1个多项式l0(x),l1(x),…,ln(x),其中
;
由条件可得
于是我们可以得出如下的拉格朗日n次插值多项式(对于全区间上的插值,n取函数表的长度)
流程图
分段线性插值 分段二次插值 全区间拉格朗日插值
程序代码及注释
1、分段线性插值
%分段线性插值
function y=piece_linear(x0,y0,x)
% x0,y0为已知点,x为待求点
n=length(x0);p=length(y0);m=length(x);
% n,p,m分别为x0,y0,x长度
if n~=p
fprintf(Error! Please input again!\n);
% x0和y0长度不等时,报错
else
for i=1:m
z=x(i);
sum=0.0;
l=0;
%给l赋初值,根据x的值确定l
if zx0(1)|zx0(n)
fprintf(Error!x(%d) is out of range!\n,i);
break;
end
%当插值点超出范围时,报错
for j=2:n
if zx0(j)
l=j;
end
if l~=0
break;
end
end
%一旦l有非零值,则终止循环,选出合适的l
for k=l-1:l
a=1.0;
for s=l-1:l
if s~=k
a=a*(z-x0(s))/(x0(k)-x0(s));
end
end
sum=sum+y0(k)*a;
end
y(i)=sum;
fprintf(y(%d)=%f\nx1=%.3f y1=%.5f,x2=%.3f y2=%.5f\n\n,i,y(i),x0(l-1),
您可能关注的文档
最近下载
- 陕西省中职职高单招英语考纲词汇表.docx VIP
- 广州市托育机构星级服务评估必达条件、评估标准、家长调查问卷、分级评估申报表、意见书.docx VIP
- 2025年中国四氯化锆项目投资计划书.docx
- 2025年中国半乳甘露聚糖项目创业计划书.docx
- 恒生校招测试笔试题目及答案.doc VIP
- IEC 60664-1-2020+cor1-2020中文版完整版.docx
- ZE-C300(V2)化学需氧量在线分析仪用户手册V2.0.pdf VIP
- 教学课件 地址数据处理 三维地质建模技术.ppt VIP
- 字体侵权法务培训.pptx VIP
- 中国国家标准 GB/T 2423.16-2022环境试验 第2部分:试验方法 试验J和导则:长霉.pdf
文档评论(0)