牛顿和拉格朗日插值算法源代码及流程图
流程图找站长要QQ3710167
//编译平台:2000+vc6.0
//实验一//作者:计算机科学与技术
#include
#include#includetypedef struct data{ float x; float y;}Data;//变量x和函数值y的结构Data d[20];//最多二十组数据float f(int s,int t)//牛顿插值法,用以返回插商{ if(t==s+1) return (d[t].y-d[s].y)/(d[t].x-d[s].x); else return (f(s+1,t)-f(s,t-1))/(d[t].x-d[s].x); }float Newton(float x,int count){ int n; while(1) { cout<<"请输入n值(即n次插值):";//获得插值次数 cin>>n; if(n<=count-1)// 插值次数不得大于count-1次 break; else system("cls"); }//初始化t,y,yt。 float t=1.0; float y=d[0].y; float yt=0.0;//计算y值 for(int j=1;j<=n;j++) { t=(x-d[j-1].x)*t; yt=f(0,j)*t; //cout<>count; if(count<=20) break;//检查输入的是否合法 system("cls"); }//获得各组数据 for(int i=0;i>d[i].x; cout<<"请输入第"<>d[i].y; system("cls"); } cout<<"请输入x的值:";//获得变量x的值 cin>>x; while(1) { int choice=3; cout<<"请您选择使用哪种插值法计算:"<>choice;//取得用户的选择项 if(choice==2) { cout<<"你选择了牛顿插值计算方法,其结果为:"; y=Newton(x,count);break;//调用相应的处理函数 } if(choice==1) { cout<<"你选择了拉格朗日插值计算方法,其结果为:"; y=lagrange(x,count);break;//调用相应的处理函数 } if(choice==0) break; system("cls"); cout<<"输入错误!!!!"<