用拉格朗日插值多项式求值

function yi=Lagrange(x,y,xi)

%   函数说明:用拉格朗日插值多项式求值

%   参数说明:x为已知值,y为x对应的函数值,x,y均为向量,xi为所求插值点

%   返回值说明:yi为xi对应的函数值

%

%   作者:野渡无人

%   最后修改日期:2008.4.24

%

%>> x=[1 2 3];

%>> xi=2.1;

%>> y=[0.367879441 0.135335283 0.049787068];

%>> yi=Lagrange(x,y,xi)

%

% yi =

%

%    0.12016564406500

 

[m1,n]=size(x);

[m2,n2]=szie(y);

if m1>1 || m2>1

    error('请输入向量,而非矩阵!');

end

 

d_x=xi-x;    

L=zeros(1,n);

if prod(x(1)-x(2:n))==0 || prod(x(n)-x(1:n-1))==0

    error('错误:除0操作!请重新输入参数!')

    return

end

L(1)=prod(d_x(2:n))/prod(x(1)-x(2:n));

L(n)=prod(d_x(1:n-1))/prod(x(n)-x(1:n-1));

for i=2:n-1

    fenzi=prod(d_x(1:i-1))*prod(d_x(i+1:n));

    fenmu=prod(x(i)-x(1:i-1))*prod(x(i)-x(i+1:n));

    if fenmu==0

        error('错误:除0操作!请重新输入参数!')

        return

    end

    L(i)=fenzi/fenmu;

end

yi=sum(L.*y);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值