编写一个拉格朗日函数,传入x,返回插值结果y。
/*-------------------------------------------------------------
函数功能:拉格朗日插值
输入变量: X用于插值的数组,Y是对应的函数值,x是输入,N是数组长度
--------------------------------------------------------------*/
float Lagrange(float X[],float Y[],float x,int N)
{
float sum = 0;
float Ln[N];
for(int i = 0; i<N ; i++)
{
float w[N],w1[N]; //将lk初始置为1
w[i] = 1;//分子
w1[i]= 1;//分母
for(int j = 0; j<N; j++)
{
if(j != i)//累乘
{
w[i] *= (x-X[j]);
w1[i]*= (X[i]-X[j]);
}
}
Ln[i] = w[i]/w1[i];
sum += Ln[i]*Y[i];
}
return sum;
}