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

📄 lagrange插值.cpp

📁 计算方法的4个小程序,牛顿插值,lagrange插值,牛顿迭代,改进欧拉公式
💻 CPP
字号:
# include<iostream.h>
void main(void)
{
	cout<<"--------------------lagrange 插值---------------------\n";
a1:	int n,i=0,j=0,c=0,m,t,max;
	do{	cout<<"请输入个数";
		cin>>n;
		cout<<"请输入次数";
		cin>>m;}
	while(m>=n);
	float *x,*y,a,A,B;
	double *l,d=0;
	x=new float[n-1];
	y=new float[n-1];
	cout<<"请由小到大按顺序输入x[i]的值"<<endl;
	for(i;i<n;i++)
	{
		cout<<"x["<<i<<"]=";
		cin>>x[i];
		cout<<'\t'<<"y["<<i<<"]=";
		cin>>y[i];
		cout<<endl;
	}
	i=0;
	for(i;i<n;i++)
	{
		cout<<"x["<<i<<"]="<<x[i]<<'\t'<<"y["<<i<<"]="<<y[i]<<endl;
	}
	cout<<'\n';
	cout<<"请输入a的值";
	cin>>a;
	cout<<"a="<<a<<endl;
	max=0;
	for(int k=1;k<=n;k++){if(a>x[k-1]) max=k;}//判断x的位置使其在众多值中只选取n+1个临近的值运算
	if(max>n-m/2||max<=m/2){	
		if(max>n-m/2) t=n-m-1;
		if(max<=m/2) t=0;
	}
	else{
		t=max-int(m/2);
	}
	for(i=t;i<t+m+1;i++){             //公式
		for(j=t;j<t+m+1;j++){
			if(j==i) continue;
			A*=(a-x[j]);
			B*=(x[i]-x[j]);
		}d+=(A/B)*(y[i]);A=1;B=1;
	}cout<<"L["<<a<<"]="<<d;
	char out='y';
	cout<<"继续?y/n"<<endl;
	cin>>out;
	if(out!='n') goto a1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -