matlab计算方法实验报告3(插值问题)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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%)

指导老师签名:

相关文档
最新文档