C语言编写牛顿插值多项式

来源:百度知道 编辑:UC知道 时间:2024/05/02 08:49:31
我编的程序 可运行答案不对,请问错在哪啊
#include <stdio.h>
void difference(float a[],float b[],int n)
{ float g[5];
int i,j;
for(i=1;i<n;i++)
{ g[0]=b[i];
for(j=0;j<i;j++)
g[j+1]=(g[j]-b[j])/(a[i]-a[j]);
b[i]=g[i];
}
return;
}
main()
{ int i,n=4;
float a[]={0,1,1.5,2},b[]={1,1.25,2.5,5.5};
float x=1.75,y;
difference(a,b,n);
y=b[4];
for(i=n-1;i>=0;i--)
y=y*(x-a[i])+b[i];
printf("y=%f",y);
}

void difference(float a[],float b[],int n)
{ float g[5];
int i,j;
for(i=1;i<n;i++)
{ g[0]=b[i];
for(j=0;j<i;j++)
g[j+1]=(g[j]-b[j])/(a[i]-a[j]);
b[i]=g[i];
}
return;
}
这里是不是应该这样呢

void difference(float a[],float b[],int n)
{ float g[5];
int i,j;
for(i=1;i<n;i++)
{ g[0]=b[i];
for(j=0;j<i;j++)
{
g[j+1]=(g[j]-b[j])/(a[i]-a[j]);
b[i]=g[i];
}
}
return;
}
估计是这里少{},加上试试看