数模--拉格朗日多项式插值、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

上一篇:项目管理基础:软件开发的方法介绍


下一篇:XP系统无法修改时间 提示没有适当的特权级该怎么办