拉格朗日多项式插值法

在数值分析中,拉格朗日常用于多项式插值。假定提供一组数据点[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的具体代码实现过程。

[html]  view plain  copy
  1. clear,clc;  
  2. x0 = linspace(-10,10,21);  
  3. y0 = x0.^2;  
  4. x = linspace(-20,20,100);  
  5. n = size(x0,2);  
  6. L = ones(n,size(x,2));  
  7. for ii = 1:n  
  8.     for jj = 1:n  
  9.         if(ii~=jj)  
  10.             L(ii,:) = L(ii,:).*(x-x0(jj))./(x0(ii)-x0(jj));  
  11.         end  
  12.     end  
  13. end  
  14. y = 0;  
  15. for ii = 1:n  
  16.     y = y +y0(ii).*L(ii,:);  
  17. end  
  18. y1 = x.^2;  
  19. plot(x,y1,'ro',x,y,'b*')  
  20. legend('source data','langrange')  
  21. title('langrange interplation vision')  

拉格朗日多项式插值法_第1张图片

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

你可能感兴趣的:(大数据理论与实践)