#include
#include
int n;
double X[20],Y[20];//全局变量double f(double s)
{
double w;
w=1.0/(1.0+25*s*s);
return w;
}
//求原函数值
double Lagrange(double t) {
double y=0.0;//初始化y
int k,j;
for(k=0;k { double p=1.0;//初始化p for(j=0;j if(k!=j)//判断是否为同一个数{p=p*(t-X[j])/(X[k]-X[j]);} y=y+p*Y[k];//求和 } return y; } //求插值结果 double fenduan(double z) { int a; double m=0.0; for(a=0;a { if(X[a]<=z&&z<=X[a+1])//确定x所在区间 {m=(Y[a]*(z-X[a+1])/(X[a]-X[a+1]))+(Y[a+1]*(z-X[a])/(X[a+1]-X[a]));} } return m; } //求分段线性插值 void main() { cout< int i; double h; double fenduan(double z); double Lagrange(double t); double f(double s);//申明要调用函数 cout<<"输入n节点个数(n>=2):"; cin>>n; h=2.0/(n-1);//求步长 X[0]=-1.0; for(i=0;X[i]<=1.0&&i<=19;i++) { Y[i]=1.0/(1.0+25*X[i]*X[i]); X[i+1]=X[i]+h; cout< }//求得插值节点 int choose; cout< cout< switch(choose) { case 1: cout< break; case 2: cout< break; default:cout<<"错误输入!"< break; } double x[20]; for(i=0;i<20;i++) { cout<<"请输入x的值(-1.0<=x<=+1.0):"; cin>>x[i];//获得变量x的值 switch(choose) { case 1: cout<<"插值结果:"< case 2: cout<<"插值结果:"< default: cout<<"请退出重新选择插值方法!"< break; } } }