- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
航空大学
数学与信息科学学院
实 验 报 告
课程名称:
实验名称:
实验类型: 验证性■综合性□设计性□
实验室名称:
班级学号: 姓名:
任课教师(教师签名):
成绩:
实验日期:
一、实验目的及题目
1、实验目的:
(1) 了解插值方法和掌握插值的应用,能够编译相关的插值程序。
(2) 掌握matlab软件的使用。
(3) 加深插值的理论原理。
2、实验题目:
题目1
已知下列数据
0.30 0.42 0.50 0.58 0.66 0.72 1.04403 1.08462 1.11803 1.15603 1.19817 1.23223
作五次插值,并分别求x=0.46,0.55,0.60 时的近似值。
题目2
编写一个用于牛顿均差插值公式计算函数值的程序,要求先输出均差表, 再计算x点的函数值,并用于下面数据:
20 21 22 23 24 1.30103 1.32222 1.34242 1.36173 1.38021 求x=21.4时的三次插值多项式的值。
二、实验原理、程序框图、程序代码等
1. 实验原理:
题目1
运用的是构造拉格朗日(Lagrange)插值多项式来求解的。拉格朗日法构造的多项式形式如下:
其中称为插值基数,且满足条件
近似多项式的余项为:
其中。
当n=1时,称为线性插值n=2时,称为二次插值或抛物线插值,精度相对高些
题目2
运用的是构造牛顿插值多项式来求解的。在拉格朗日插值方法中,若增加一个节点数据,其插值的多项式需重新计算。现构造一个插值多项式,只需对作简单修正(如增加某项)即可得到,这样计算方便。利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;另一方面的各项系数恰好又是各阶差商,而各阶差商可用差商公式来计算。
由线性代数知,对任何一个不高次的多项式 (幂基)
也可将其写成
其中为系数,为给定节点,可由求出 即可得到插值多项式。
function lag(x,y,xi)
dxi=xi-x;
n=length(x); %n为数组x的长度
L=zeros(size(y));
L(1)=prod(dxi(2:n))/prod(x(1)-x(2:n)); %构造拉格朗日多项式
L(n)=prod(dxi(1:n-1))/prod(x(n)-x(1:n-1));
for j=2:n-1
num=prod(dxi(1:j-1))*prod(dxi(j+1:n));
den=prod(x(j)-x(1:j-1))*prod(x(j)-x(j+1:n));
L(j)=num/den;
end
yi=sum(y.*L);
fprintf(x=%f,y=%f,xi,yi); %打印结果
plot(x,y,’-’,x,L(n),’y’)
题目2的代码:
function newton(x,y,m) %m为将要插入的数据
%以下可以输出差分表
n=length(x);
fprintf(*****************差分表**************************\n);
F=ones(n,n);
F(:,1)=y;
for i=2:n
for j=i:n
F(j,i)=(F(j,i-1)-F(j-1,i-1))/(x(j)-x(j-i+1));
end
end
for i=1:n
fprintf(%4.2f,x(i));
for j=1:i
fprintf(%10.5f,F(i,j));
end
fprintf(\n);
end
% 以下代码为计算多项式函数P(x)的值
P=y(2);
k=2;
for i=1:3 % 插值次数 此处为3次插
d=F(i,i+1);
for j=2:k
d=d*(m-x(j));
end
P=P+d;
k=k+1;
end
fprintf(插值多项式P=%f\n,P);
三、实验过程中需要记录
文档评论(0)