拉格朗日插值和埃尔米特插值

本文通过MATLAB代码展示了拉格朗日插值法与Hermite插值法的具体实现过程,包括生成插值节点、计算插值多项式及绘制对比图表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

%%  2022-1-15拉格朗日插值法,Hermite插值
%生成插值节点
clc;clear all;close all;
t=[0:2*pi/100:2*pi];
X=linspace(0,2*pi,5);
y=sin(t);
Y=sin(X);

%拉格朗日插值一共有5个点会产生4次多项式
k=1;syms x;L4x=0;
for k=1:5
    L=1;
  for i=1:5
    if k~=i;
          L=(x-X(i))./(X(k)-X(i)).*L;     
    else 
         continue;
    end
  end
   L4x=Y(k).*L+L4x;
end
XL=[0:2*pi/10:2*pi];
YL=zeros(size(XL));
for i=1:length(XL)
    YL(i)=subs(L4x,XL(i));
end
figure('Name','拉格朗日拟合','NumberTitle','off');
plot(XL,YL,'-ob',t,y);



%Hermite插值,n=4,mo=3(有三介导x=0)
X=[0 0 0 0  0.5*pi];
Y=[0 0 0 0   1]
Y_1=[0 1 0 -1 1];
k=1:5;
df=zeros(5,3);
for i=1:5
        df(i,1)=Y(i);
end
for j=1:4
    for i=1:1:length(X)-j
        dx=X(i+1)-X(i);dy=Y(i+1)-Y(i);
        if dx~=0
            df(i,j+1)=dy./dx;%一阶差商
        else
            df( i,j+1)=Y_1(j+1)./ factorial(j);
        end
    end
end
%H=f(0)+f[0,0](x-0)+f[0,0,0](x-0)(x-0)+f[0 0 0 0](x-0)^3+f[0 0 0 0 1](x-0)^3*(x-0.5*pi)
syms x;
 L=0; 
for j=1:5
     Lk=1;
    if j==1
        Lk=1;
    else
        for k=2:j
            Lk= (x-df(k,1))*Lk;
        end
    end
      L=df(1,j)*Lk+L;
end
t=[0:0.5*pi/5:0.5*pi];
for i=1:length(t)
    Y(i)=subs(L,t(i));
end
figure('Name','埃尔米特插值','NumberTitle','off');
plot(t,Y,'-ob',t,sin(t));    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值