📄 lagrame插值.cpp
字号:
// 黄泳晞(2003402054529) Lagrame插值
// 程序中函数为 x*x-4.213
// 输入N应该在0~20之间
#include<iostream.h>
#include<math.h>
class lagrange
{
public:
float Y[20];
int X[20];
print()
{
cout<<"本程序中函数为 x*x-4.213"<<endl;
cout<<"K的值为0到20"<<endl<<"以下测试本程序"<<endl<<endl;
int i,j=10;
cout<<"参考数值如下:"<<endl;
for(i=0;i<20;i++)
cout<<"X"<<i<<"="<<F(i)<<endl;
cout<<endl;
};
float F(float x)//方程函数 x*x-4.213
{
float temp;
temp=x*x-4.213;
return temp;
};
float Ready()//吧0~20代入函数,计算好0~20的值
{
int i=0,j=0;
for(i=0;i<20;i++)
X[i]=i;
for(j=0;j<20;j++)
Y[j]=F(j);
return 0;
};
Acc()//主计算程序
{
float N,i,j,ans, method,esp;
int x,y;
cout<<"输入N的值:";
cin>>N;
cout<<"输入ζ的值:";
cin>>esp;
if(N<1)//开始判断使用哪两个点做插值
{x=0;y=1;}
if(N>19)
{x=19;y=20;}
else{
for(i=0;i<=20;i++)
{
if( (i-N>=-1) && (i-N<0) )
{x=i;y=i+1;}
}
}//下面为计算出N的值
ans=( Y[x]*( (N-X[y])/(X[x]-X[y]) ) + Y[y]*( (N-X[x])/(X[y]-X[x]) ) );
cout<<"L("<<N<<")="<<ans<<endl;
method=esp/2*(N-X[x])*(N-X[y]);//计算误差值
cout<<"R("<<N<<")="<<method<<endl;
};
};
main()
{
char a;
lagrange t;
t.print();
t.Ready();
do{
t.Acc();
cout<<endl<<"重新输入?(y/n)";
cin>>a;
}while(a=='y');
if(a=='n')
cout<<"ByeBye"<<endl<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -