牛顿插商法
#include <stdio.h>
void fuzhi(double *a,double *b,int n)
{
for(int i=0;i<n;i++)
{
printf("请输入第%d个结点和节点值:",i+1);
scanf("%lf%lf",&a[i],&b[i]);
printf("\n");
}
}
//牛顿插商
double newton(double x[],double y[],int n,double t)
{
double sum=y[0];
int k=1;
int m=n;
double p;
double c[10];
for(int i=0;i<n;i++)
c[i]=y[i];
for(i=0;i<n-1;i++){
p=1;//初始化
for(int j=0;j<i;j++)//求(X-X0)*(X-X1)*...(X-Xn-2)
p=(t-x[j])*p;printf("%lf",p);
//求出并存放插商值
for(j=0;j<m-1;j++){
c[j]=(c[j+1]-c[j])/(x[j+k]-x[j]);
printf("%lf",c[0]);}
sum=sum+c[0]*p;
k++;
m--;
}
return sum;
}
void main()
{ int n;
double p;
double q;
printf("请输入要插入结点的个数:");
scanf("%d",&n);
printf("\n");
double x[10],y[10];
fuzhi(x,y,n);
printf("请输入所要求的数:");
scanf("%lf",&p);
q=newton(x,y,n,p);
printf("所求结果为:%lf",q);[img=http://][/img]
printf("\n");
}输出结果老是不对 主要是p=(t-x[j])*p;printf("%lf",p);
printf("%lf",c[0]);}
好像不对 又不知怎么改 纠结啊 求各位好汉帮忙