牛顿的插值法用C语言怎么编写怎么编啊?

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:13:10
这是数值分析的一个内容,如果你还知道拉格朗日的插值用C语言怎么编的话,也可以拿出来分享一下,我用C语言编了一个拉格朗日的插值法,如果你想要的话,我可以拿给你分享!
#define N 4
main()
{ int i,j;
float x[N],y[N],c,z[N*(N-1)/2],a,b=1,p,t=0;
printf("请输入插入点:\n");
scanf("%f",&c);
printf("请输入 函数的点:\n");
for(i=0;i<N;i++)
scanf("%f %f",x+i,y+i);
p=y[0];
for(j=0;j<N-1;j++)
for(i=j;i<N-1;i++)
{ if(j!=0)
z[i*(i-1)/2+j]=((z[i*(i-1)/2+j-1]-z[(i-1)*(i-2)/2+j-1])/(x[i]-x[i-j]));
else z[i*(i-1)/2+j]=(y[i+1]-y[i])/(x[i+1]-x[i]);
if(i==j)
{ a=c-x[j];b*=a;
t=z[i*(i-1)/2+j]*b;
p+=t;
}
}
printf("结果为:\n");
printf("%f\n",p);
}

这是我自己用C语言编的,我用了压缩矩阵!
大家可以去参考一下!
也可以用更多的方法去编写!

楼上的不是用c语言吧,

我本来想帮你(当然我的C语言不是很差),不过我是个医生,我不懂牛顿的插值法是什么东东,无能为力。

#include<iostream.h>
main()
{
double e=0.000001;
int N=6;
int k=1;
double f(double d);
double ff(double d);
double a;
double x=1.5;
double y;
cout<<"Newton法迭代:"<<endl;
for(;k<=N;)
{
y=x-(f(x)/ff(x));
if((y-x)>0)
a=(y-x);
else
a=-(y-x);
if(a<e)
cout<<"X"<<k<<"="<<y<<endl;
k++;x=y;
}
return 0;
}

double f(double d)
{
return d*d*d+2*d*d+10*d-20;
}
double ff(double d)
{
return 3*d*d+4*d+10;
}

C++
我要学!
QQ523041704!!!!!

#include <iostream.h>
#include <math.h>
void main()
{
char L;
do
{
double M[100][100];
double x[100],y[100];
double X=1,xx=0,w=1,N=0,P,R=1;