数模--拉格朗日多项式插值、matlab实现

拉格朗日多项式公式:

        

Matlab编程实现拉格朗日插值法计算插值

matlab中插入一个值的代码

function yh=lagrange(x,y,xh)  %定义拉格朗日插入函数
n=length(x);                  %统计x和xh的长度
m=length(xh);            
yh=zeros(1,m);                %构建一行m列的zero矩阵
c1=ones(n-1,1);               %构建n-1行一列的单位矩阵
c2=ones(1,m);
for i=1:n
    xp=x([1:i-1 i+1:n]);
    yh=yh+y(i)*prod((c1*xh-xp'*c2)./(x(i)-xp'*c2));  
end


%  '* 表示转置乘,如r'*c 则表示将r转置后在与c相乘
%  求乘函数prod();prod(A)、prod(A,dim);
%  默认情况下dim的值为1,表示直接分别得出A中的每个列结果
%  dim值为2表示分别得出A中的每行的结果
>> x=[2003 2004 2005 2006 2007];
>> y=[13124000 13299000 13314000 13551100 14101800];
>> xh=2008;
%先对函数调用所需要的参数进行赋值

>>lagrange(x,y,xh)

        上述程序一次只能实现一个插值计算。进行多个值插入的代码如下

function yh=lagrange(x,y,xh)
n = length(x);
m = length(xh);
x = x(:);
y = y(:);
xh = xh(:);
yh = zeros(m,1); 

c1 = ones(1,n-1);
c2 = ones(m,1);

for i=1:n,
  xp = x([1:i-1 i+1:n]);
  yh = yh + y(i)*prod((xh*c1-c2*xp')./(c2*(x(i)*c1-xp')),2);
end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值