matlab计算方法实验报告3(插值问题)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算方法实验报告(3)
学生姓名杨贤邦学号指导教师吴明芬实验时间2014.4.9地点综合实验大楼203
实验题目插值方法
实验目的●掌握拉格朗日、牛顿插值法的算法思想;
●根据相关数据,用Matlab或C现实拉格朗日、牛顿插值法
实验内容●拉格朗日、牛顿插值法及其Matlab实现;
●题目由同学从学习材料中任意选两题。
算法分析与源程序拉格朗日插值:
function y=chazhi_lage(x0,y0,x)
i=length(x0);
y=0;
for j=1:i
p=1;
for k=1:i
if j~=k
p=p*(x-x0(k))/(x0(j)-x0(k));
end
end
y=y0(j)*p+y;
end
end
牛顿插值:
function y=chazhi_newton(x0,y0,x)
n=length(x0);
a(1)=y0(1);
s=1;
yy=0;
for i=2:n
a(i)=y0(i);
s=(x-x0(i-1))*s;
for j=1:i-1
a(i)=(a(i)-a(j))/(x0(i)-x0(j));
end
yy=a(i)*s+yy;
end
y=a(1)+yy;
实验结果与分析1.依据以下数据表:分别用牛顿插值和拉格朗日插值求f(1.2)的值
x-2-10123
f(x)-5111725
拉格朗日插值法结果:>>chazhi_lage(a,b,1.2)
ans=1.52800000000000
牛顿插值法结果:>>chazhi_newton(a,b,1.2)
ans=1.52800000000000
2.已知:√100=10,√121=11,√144=12,分别用拉格朗日和牛顿插值法求√115的近似值。
拉格朗日插值法结果:>>chazhi_lage(x,y,115)
ans=10.72275550536420
牛顿插值法结果:>>chazhi_newton(x,y,115)
ans=10.72275550536420
有上述实验结果分析,无论用拉格朗日或者牛顿的插值法计算出来的结果都是一样的,这是可以理解的,毕竟这两种方法都是通过构造n 次插值多项式求得。区别是牛顿插值是一种具有递推性质的插值公式,即公式不用依赖于全部插值节点。当这种递推形式无疑使编程实现的难度高于拉格朗日插值,而且个人还觉得这种算法的时间复杂度比拉格朗日插值法要高。
其它编写牛顿插值法有点难度,特别是编写差商的那部分,开始时有着想放弃的倾向,不过最后坚持下来,参考了别人的算法,然后才编写了出来··
成
绩
考
核
算法分析与源程序(50%),实验结果及分析(30%),实验报告(20%)
指导老师签名: