拉格朗日插值算法(附c++源码)

C++程序实现Lagrange插值公式

      Lagrange插值公式,是属于数值分析方面的内容。此处我想用C++语言程序来实现n各插值节点插值公式的求解,并求出在某一个插值节点对应的函数值。
   对于Lagrange插值算法的基本思想,在这里我只想略提两点,一个是拉格朗日插值公式,一个是拉格朗日插值基函数的求解。因为这两者才是算法需要解决的最根本的问题。
  (1)采用插值多项式  来近似的逼近拉格朗日差值多项式   即 其中
  (2)上面的插值多项式中的  即为拉格朗日插值多项式的插值基函数的通项 而且  
个人建议,在了解了拉格朗日插值公式后,最好先找一个简单的实例题自己在本子上写写步骤练练手,这样在写算法代码时会更上手一些。

源码如下:

#include
using namespace std;
//预先定义插值节点的个数为1000个,根据控制台输入的个数num从而确定插值节点的个数
const int N = 1000;

//arrX[N],arrY[N]分别存放的是插值节点(Xi,Yi)中的Xi,Yi,参数n为插值节点的个数,而参数x为待求解的插值节点的X值
//函数返回值为求解出来的插值节点x对应的y值
//注意整个过程涉及的变量,除了循环变量为int外,其他均为float
float Lagrange(float arrX[],float arrY[],int n,float x){
   float yResult=0.0;

   //LValue[N]存放的是每次求解的插值基函数的通项
   float LValue[N];

   //循环变量k,m
   int k,m;
   //插值基函数中的上下累乘temp1,temp2
   float temp1,temp2;

   for(k=0; k>num;

 cout<<"\n--接下来输入这些插值节点(先输入X再输入对应的Y)--\n";
 for(int i=0; i>arrX[i];
    cout<<"第"<>arrY[i];
 }

 float X;
 cout<<"\n--请输入待求解的插值节点的X值--\n";
 cin>>X;

 float Res = Lagrange(arrX,arrY,num,X);
 cout<<"\n--插值结果为:"<

你可能感兴趣的:(算法)