⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lagrame插值.cpp

📁 数值计算 中的各种算法: Lagrame插值,Newton迭代法,Runge-kutta,二分法求根,解线性方程组的Guass列主元消去法,自动选择步长Simpson法
💻 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 + -