求拉格朗日插值多项式

function y=LagrangePolynomial(xi,yi)

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

%  参数说明:xi为观测点,yi为相应观测值,均为向量形式

%  返回值说明:y为关于x的多项式

%

%   作者:野渡无人

%   最后修改日期:2008.4.24

%

%>> xi=[0 1 2];

%>> yi=[1 2 3];

%>> y=LagrangePolynomial(xi,yi)

%

% y =

%

% x+1

 

 

syms x L

 

[m1,n]=size(xi);

[m2,n2]=size(yi);

if m1>1 || m2>1

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

end

 

d_x=x-xi;

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

for i=2:n-1

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

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

    if fenmu==0

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

        return

    end

    L=[L,sym(fenzi/fenmu)];

end

L=[L,sym(prod(d_x(1:n-1))/prod(xi(n)-xi(1:n-1)))];

y=collect(sum(L.*yi));%合并同类项

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值