牛顿插值多项式,用于离散数据的拟合
2008-05-28 22:56
387 查看
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
void difference(float *x,float *y,int n)
{ float *f;
int k,i;
f=(float *)malloc(n*sizeof(float));
for(k=1;k<=n;k++)
{ f[0]=y[k];
for(i=0;i<k;i++)
f[i+1]=(f[i]-y[i])/(x[k]-x[i]);
y[k]=f[k];
}
return;
}
main()
{ int i,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");
difference(x,(float *)y,n);
printf("Input xx:");
scanf("%f",&xx);
yy=y[20];
for(i=n-1;i>=0;i--) yy=yy*(xx-x[i])+y[i];
printf("NewtonInter(%f)=%f",xx,yy);
getch();
}
#include <conio.h>
#include <alloc.h>
void difference(float *x,float *y,int n)
{ float *f;
int k,i;
f=(float *)malloc(n*sizeof(float));
for(k=1;k<=n;k++)
{ f[0]=y[k];
for(i=0;i<k;i++)
f[i+1]=(f[i]-y[i])/(x[k]-x[i]);
y[k]=f[k];
}
return;
}
main()
{ int i,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");
difference(x,(float *)y,n);
printf("Input xx:");
scanf("%f",&xx);
yy=y[20];
for(i=n-1;i>=0;i--) yy=yy*(xx-x[i])+y[i];
printf("NewtonInter(%f)=%f",xx,yy);
getch();
}
相关文章推荐
- 拉格朗日插值多项式 ,用于离散数据的拟合
- 1.拉格朗日插值多项式 ,用于离散数据的拟合
- 数值分析(拟合、插值和逼近)之数据插值方法(线性插值、二次插值、Cubic插值、埃米尔特、拉格朗日多项式插值、牛顿插值、样条插值)(含opengl程序)
- matlab_离散数据处理_插值拟合积分
- 数据拟合与插值方法
- MATLAB在多项式插值及曲线拟合方面的应用
- 数据拟合:多项式拟合polynomial curve fitting
- 牛顿基本插值多项式
- 数据拟合:多项式拟合polynomial curve fitting
- 离散数据点的曲面插值Matlab示例程序
- 最小二乘法用于直线,多项式,圆,椭圆的拟合及程序实现
- 数据拟合:多项式拟合polynomial curve fitting
- C#版 代码实现 数据拟合,可用于MsChart拟合绘图等
- 数据拟合与插值方法(matlab)
- 用离散正交多项式求三次拟合多项式[MATLAB版本]
- Matlab之用牛顿均差求插值多项式
- 一元以及二元多项式插值拟合(泰勒)
- 牛顿插值求解多项式
- MATLAB感悟(1)--数据切割与插值拟合
- 最小二乘法用于直线,多项式,圆,椭圆的拟合及程序实现