//Newton插值
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int NUM;//需要已知点个数-1=插值次数
double X[MAX];
double Y[MAX];
void Input_Data()
{
int i;
printf("N次插值:\n");
printf("N=");
scanf("%d",&NUM);
printf("X向量:\n");
for(i=0;i<=NUM;i++)
scanf("%lf",&X[i]);
printf("Y向量:\n");
for(i=0;i<=NUM;i++)
scanf("%lf",&Y[i]);
}
double Newton(double X_Location)
{
int i,j;
double s=Y[0];
double p=1;
printf("差商表:\n");
for(i=1;i<=NUM;i++)
{
printf("%d阶差商表:\t",i);
for(j=1;j<=NUM-i+1;j++)
{
Y[j-1]=(Y[j]-Y[j-1])/(X[j+i-1]-X[j-1]);
printf("%lf\t",Y[j-1]);
}
printf("\n");
p=p*(X_Location-X[i-1]);
s=s+Y[0]*p;
}
return s;
}
int main()
{
double X_location,Result;
Input_Data();
printf("X:\n");
scanf("%lf",&X_location);
Result=Newton(X_location);
printf("Result:%lf\n",Result);
return 0;
}
C语言实现牛顿插值(计算方法)
最新推荐文章于 2025-05-20 10:11:38 发布