当前位置: 首页 > 工具软件 > Lagrange > 使用案例 >

拉格朗日(lagrange)插值计算

柳宏深
2023-12-01

/**
拉格朗日插值计算
拉格朗日插值公式:
                        n         n
  Pn(x(i))=      ∑〔   ∏  (x-x(j))/(x(k)-x(j)) 〕y(k)
                      k=0     j=0
                                 j≠k
 
  属性:插值计算法
                                                                                           n
  精度(局部截断误差):| f(x) - Pn(x) | = [f(ε)] / (n+1)!  ∏  ( x - x(k) )   (注:其中[f(ε)]为f(ε)第n+1次求导的表达式)
                                                                                         k=0
                                         
 《数值分析简明教程》-2 Editon -高等教育出版社 -page 18 -算法流程图

  代码维护:2005.6.11  DragonLord
**/

#include<iostream.h>
int main()
{
 float x;//插值
 float p[10][2];//已知(x0,y0),(x1,y1)...
 int n;//输入已知插值组数
 float y,t;
 int k;
 
 cout<<"输入插值组数:"<<endl;
 cin>>n;
 cout<<"输入"<<n<<"组已知插值数(X,Y)"<<endl;
    for(int i=0;i<n;i++)
 {
  cin>>p[i][0]>>p[i][1];
 }
    cout<<"输入插值:"<<endl;
 cin>>x;
 
    y=0;
 k=0;
 
 for(k=0;k<n;k++)
 {
  t=1;
  for(i=0;i<n;i++)
  {
   if(i!=k)
   {
    t=t*(x-p[i][0])/(p[k][0]-p[i][0]);  //key step
   }
  }
  y=y+p[k][1]*t;

 }
 cout<<"插值结果:"<<y<<endl;

return 0;
}

 类似资料: