拉格朗日多项式公式:
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