拉格朗日插值算法分析

这几天一直研究拉格朗日多项式,今天将自己对拉格朗日多项式的理解写在这里,方便大家交流。

在数值分析中,拉格朗日常用于多项式插值。假定提供一组数据点[xi,yi],拉格朗日插值多项式就是由这些

数据的线性运算得到的。


其中基本的多项式有以下公式计算得到


注意

 1.第一提供的xi应该是没有相同的,否则不能应用此算法

 2.对于每一个xi,yi都只对应一个值

 3.对于i~=j,lj(x)包括x-xi,因此,整个表达式的乘积将是0。

     

 4.相反

         

 5.因此yi*li(x)=yi,因此在每一个点xi,L(xi) = yi+0+0+........+0=yi,表明这个拉格朗日插值算法的正确性。

举例说明

x = [1 2 3 ]  y = f(x)=[1 4 9]

则L(x) = 1*(x-2)*(x-3)/{(1-2)(1-3)}+4*(x-1)(x-3)/{(2-1)*(2-3)}+9(x-1)(x-2)/{(3-1)(3-2)}=x^2

下面看一下MATLAB的具体代码实现过程。

clear,clc;
x0 = linspace(-10,10,21);
y0 = x0.^2;
x = linspace(-20,20,100);
n = size(x0,2);
L = ones(n,size(x,2));
for ii = 1:n
    for jj = 1:n
        if(ii~=jj)
            L(ii,:) = L(ii,:).*(x-x0(jj))./(x0(ii)-x0(jj));
        end
    end
end
y = 0;
for ii = 1:n
    y = y +y0(ii).*L(ii,:);
end
y1 = x.^2;
plot(x,y1,'ro',x,y,'b*')
legend('source data','langrange')
title('langrange interplation vision')

拉格朗日插值算法分析_第1张图片

虽然样本数据点只有21个,但足以看出插值曲线足以和满足标准了,插值效果还是很好的

你可能感兴趣的:(拉格朗日插值算法分析)