拉格朗日差值

拉格朗日差值

1.线性插值

已知:

x_{i}x_{1}x_{2}
y_{i}y_{1}y_{2}

对于两点可以确定一条直线,我们可以用一条直线来“穿过这2个点”,那么这条直线是多少呢?

令f(x)=kx+b可以推导出                      f(x)=\frac{x-x_{2}}{x_{1}-x_{2}}*y_{1}+\frac{x-x_{1}}{x_{2}-x_{1}}*y_{2} 

那我们想一想是否可以直接写出f(x),而不经过推到呢?

                                                         令  l_{1}=\frac{x-x_{2}}{x_{1}-x_{2}},l_{2}=\frac{x-x_{1}}{x_{2}-x_{1}}

                                                          那么f(x)=l_{1}*y_{1}+l_{2}*y_{2}

我们只需要确定 l1和l2就可以了。

我们再看表格,当 l_{1} 时,我们需要 穿过 (x1,y1)这个点。那么即当x=x1时,l1等于1. x=x2时,l1=0.也就是构造出上式。

同理 l2.

2.抛物线差值

我们去拟合3个点,得到的是二次函数。

x_{i}x_{1}x_{2}x_{3}
y_{i}y_{1}y_{2}y_{3}

 

f(x)=\frac{(x-x_{2})(x-x_{3})}{(x_{1}-x_{2})(x_{1}-x_{3})}*y_{1}+\frac{(x-x_{1})(x-x_{3})}{(x_{2}-x_{1})(x_{2}-x_{3})}*y_{2}+\frac{(x-x_{1})(x-x_{2})}{(x_{3}-x_{1})(x_{3}-x_{2})}*y_{3}

代码如下: 

%sin(50')=0.7660
x=[45 60]';y=[0.7070 0.866]';
t=50;
a1=t-x(2); b1=x(1)-x(2); a2=t-x(1); b2=x(2)-x(1);
f=a1*y(1)/b1 + a2*y(2)/b2;

xx=[30 45 60]';yy=[0.5 0.7070 0.866]';
tt=50;
a=(t-xx(2))*(t-xx(3))/((xx(1)-xx(2))*(xx(1)-xx(3)));%y(1)
b=(t-xx(1))*(t-xx(3))/((xx(2)-xx(1))*(xx(2)-xx(3)));%y(2)
c=(t-xx(1))*(t-xx(2))/((xx(3)-xx(1))*(xx(3)-xx(2)));%y(3)
ff=a*yy(1)+b*yy(2)+c*yy(3);

给定n个值,插成n-1次。 

clc;clear all;
disp("有几对x,y");
m=input('m=');
for i=1:m
    x(i)=input('x=');
    y(i)=input('y=');
end
disp("输入想求的x");
xx=input('xx=');
yy=0;
for i=1:m
    yy=yy+fenzi(xx,i,x)*y(i)/fenmu(i,x)
end
yy

function[f1]=fenzi(xx,index,x)%xx是要求的x,index 是第几个L0,x是所有的x值
   len=length(x);
   f1=1;
   for i=1:len
       if(i==index)
           continue;
       end
       f1=f1*(xx-x(i));
   end
end
function[f2]=fenmu(index,x)%xx是要求的x,index 是第几个L0,x是所有的x值
   len=length(x);
   f2=1;
   for i=1:len
       if(i==index)
           continue;
       end
       f2=f2*(x(index)-x(i));
   end
end

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值