编程实现拉格朗日(lagrange)插值法(C语言)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编程实现拉格朗日(lagrange)插值法(C语言)

程序如下:

#include

#include

#include

float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/ {

int i,j;

float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项式*/ a=(float *)malloc(n*sizeof(float));

for(i=0;i<=n-1;i++)

{

a[i]=y[i];

for(j=0;j<=n-1;j++)

if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]);

yy+=a[i];

}

free(a);

return yy;

}

int main()

{

int i;

int n;

float x[20],y[20],xx,yy;

printf("Input n:");

scanf("%d",&n);

if(n>=20)

{

printf("Error!The value of n must in (0,20)."); getch();return 1;

}

if(n<=0)

{

printf("Error! The value of n must in (0,20)."); getch(); return 1; }

for(i=0;i<=n-1;i++)

{

printf("x[%d]:",i);

scanf("%f",&x[i]);

}

printf("\n");

for(i=0;i<=n-1;i++)

{

printf("y[%d]:",i);scanf("%f",&y[i]);

}

printf("\n");

printf("Input xx:");

scanf("%f",&xx);

yy=lagrange(x,y,xx,n);

printf("x=%f,y=%f\n",xx,yy);

getch();

}

相关文档
最新文档