(一)拉格朗日插值多项式
#include 《stdio.h》
#include 《conio.h》
#include 《alloc.h》
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;
}
main()
{ int i,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();
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !