(一)拉格朗日插值多项式
#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();
}
(二)牛顿插值多项式
#include
#include
#include
void difference(float *x,float *y,int n)
{
float *f;
int k,i;
f=(float

本文提供了C语言实现的几个经典数值计算算法,包括拉格朗日插值、牛顿插值多项式。代码详细展示了如何用C语言进行多项式插值,适用于数值计算和数据拟合场景。
最低0.47元/天 解锁文章
542

被折叠的 条评论
为什么被折叠?



