【计算方法数值分析】matlab插值问题,拉格朗日插值、牛顿差值实现及对比

【计算方法数值分析】插值问题

在这里插入图片描述
1、 拉格朗日插值
在这里插入图片描述

function f=agui_lagrange(x0,y0,x)
%x0为节点向量,y0为节点上的函数值,x为插值点,f返回插值
n=length(x0);
m=length(x);
format long
s=0.0;
for k=1:n
    p=1.0;
    for j=1:n
        if j~=k
            p=p*(x-x0(j))/(x0(k)-x0(j));
        end
    end
    s=p*y0(k)+s;
end
f=s;
end

f(0.5)= 0.521089682539683 f(0.7)= 0.758588904761904
f(0.85)= 0.956119446428571

在这里插入图片描述
2、 牛顿插值
在这里插入图片描述

function yi=agui_newtoninterp(x,y,xi)
%Newton插值方法,给定一系列插值的点(x,y),得到在x=xi处的,牛顿插值多项的值yi
n=length(x);
m=length(y);
if m~=n
 error('x,y的长度不一样,请重新输入!');
 return
end
A=zeros(n); %定义差商表
A(:,1)=y; %差商表第一列为y
for j=2:n%j为列标
for i=1:(n-j+1)%i为行标
 A(i,j)=(A(i+1,j-1)-A(i,j-1))/(x(i+j-1)-x(i));%计算差商表
end
end
disp('差商表为:')
disp(A)
%根据差商表,求对应的牛顿插值多项式在x=xi处的值yi
N(1)=A(1,1);
for j=2:n
 T=1;
for i=1:j-1
T=T*(xi-x(i));
 end
 N(j)=A(1,j)*T;
end
yi=sum(N); %将x=xi带入牛顿插值多项式,得到的yi的值
end


f(0.5)= 0.5211, f(0.7)= 0.7586 f(0.85)= 0.9561
在这里插入图片描述
<1>拉格朗日插值法与牛顿插值法都是常用的简便的插值法。但牛顿法插值法则更为简便,与拉格朗日插值多项式相比较,它不仅克服了“增加一个节点时整个计算工作必须重新开始的缺点,而且可以节省乘、除法运算次数。同时,在牛顿插值多项式中用到的差分与差商等概念,又与数值计算的其他方面有着密切的关系。
<2>对于一些计算比较复杂的函数,牛顿插值法就比拉格朗日插值法具有优势
<3>由实验结果可看出拉格朗日插值与牛顿插值最终计算的实验结果基本一致,只是涉及到最终结果精度的问题,所以二者各自有各自的特点,依照函数而定适用对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值