[开源]C程序:差分形式的插值公式
/* 差分形式的插值公式 */#include "Stdio.h"
#include "Conio.h"
int main(void)
{
float x,x0,h,y[15];
int n;
void input(float *,int *,float *,float *,float *);
float f(float,int,float,float,float *);
input(y,&n,&x0,&x,&h);
printf("\nf(%f)=%f",x,f(x,n,x0,h,y));
getch();
return 0;
}
void input(float *y,int *n,float *x0,float *x,float *h)
{
int i;
printf("请输入插值起始点X0=");
scanf("%f",x0);
printf("\n请输插值点间距H=");
scanf("%f",h);
printf("\n请输入插值点个数N=");
scanf("%d",n);
printf("\n请输入插值点值y(xi)=");
for(i=0;i<*n;i++)
{
scanf("%f",y+i);
}
printf("\n请输入插值点X=");
scanf("%f",x);
}
float f(float x,int n,float x0,float h,float *y)
{
int i,j;
float fx=0,t;
t=(x-x0)/h;
for(i=1;i<=n-1;i++)
for(j=n-1;j>=i;j--)
{
*(y+j)=*(y+j)-*(y+j-1);
}
for(i=n-1;i>0;i--)
fx=(fx+*(y+i))*(t-i+1)/i;
return fx+*y;
}