拉格朗日插值多项式c++代码
#include <stdio.h>
#define Max_N 20
float lagrange(float x[],float y[],float xx,int N)
{ int i,j;
float l,L;
L=0.0;
for(i=0;i<=N;i++)
{ l=1.0;
for(j=0;j<=N;j++)
{ if(j!=i)
l=l*(xx-x[j])/(x[i]-x[j]);
}
L = L +y[i]*l;
}
return(L);
}
Int main()
{ float x[Max_N],y[Max_N];
float xx,L;
int i,N;
printf("\ninput n:\n ");
scanf("%d",&N);
printf("input x[%d]:\n ",N);
for(i=0;i<=N;i++)
scanf("%f",&x[i]);
printf("input y[%d]:\n ",N);
for(i=0;i<=N;i++)
scanf("%f",&y[i]);
printf("input x:\n ");
scanf("%f",&xx);
L=lagrange(x,y,xx,N);
printf("\nL(%f)=%f",xx,L);
return 0;
}