- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
精品文档,知识共享!
数值计算方法实验报告
实验名称: 插值与拟合
实 验 室:
专业班级:
学 号:
姓 名:
实验一:插值
实验目的
在matlab中实现分段线性插值、分段二次插值和全区间的拉格朗日插值
实验内容
1、从函数表
0.0
0.1
0.195
0.3
0.401
0.5
0.39894
0.39695
0.39142
0.38138
0.36812
0.35206
出发,用下列方式计算,及的近似值:
拉格朗日线性插值;
牛顿线性插值;
分段二次插值;
全区间上拉格朗日插值.
(要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的结点).
步骤:
①拉格朗日线性插值
Matlab源代码:
function Lagrange
x0=[0.0;0.1;0.195;0.3;0.401;0.5];
y0=[0.39894;0.39695;0.39142;0.38138;0.36812;0.35206];
x=[0.15;0.31;0.47];
n=length(x0);
m=length(x);
for j=1:m
for i=1:n
if (x(j)=x0(i))(x(j)=x0(i+1))
y=(x(j)-x0(i+1))/(x0(i)-x0(i+1))*y0(i)
+(x(j)-x0(i))/(x0(i+1)-x0(i))*y0(i+1);
end
end
fprintf(f(%0.2f)的近似值为%0.5f\n,x(j),y);
end
运行结果:
Lagrange
y =0.1880 f(0.15)的近似值为0.18803
y =0.3436 f(0.31)的近似值为0.34362
y =0.1116 f(0.47)的近似值为0.11155
②牛顿线性插值
Matlab源代码:
function Newton_line
x0=[0.0;0.1;0.195;0.3;0.401;0.5];
y0=[0.39894;0.39695;0.39142;0.38138;0.36812;0.35206];
x=[0.15;0.31;0.47];
n=length(x0);
m=length(x);
for j=1:m
for i=1:n-1
if x(j)x0(i+1)x(j)x0(i)
k=i;
f=(y0(i+1)-y0(i))/(x0(i+1)-x0(i));
end
end
y=y0(k)+f*(x(j)-x0(k));
fprintf(f(%0.2f)的牛顿线性插值近似值为%0.5f\n,x(j),y);
end
运行结果:
f(0.15)的牛顿线性插值近似值为0.39404
f(0.31)的牛顿线性插值近似值为0.38007
f(0.47)的牛顿线性插值近似值为0.35693
③分段二次插值
Matlab源代码:
function ercichazhi(x)
x0=[0.0;0.1;0.195;0.3;0.401;0.5];
y0=[0.39894;0.39695;0.39142;0.38138;0.36812;0.35206];
n=length(x0);
y=0;
for j=1:n-1
if(xx0(j)xx0(j+1))
if j==1
I=j;
else if j==n-1
I=j-1;
else
e1=abs(x-x0(j-1));
e2=abs(x-x0(j+2));
if e1e2
I=j-1;
else I=j;
end
end
end
for k=I:I+2
P=1;
for i=I:I+2
if(i==k)
continue;
end
P=P*(x-x0(i))/(x0(k)-x0(i));
end
y=y+P*y0(k
文档评论(0)