matlab计算方法实验报告3(插值问题).doc
文本预览下载声明
计算方法实验报告(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-10123f(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%)
指导老师签名:
显示全部