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

📄 fenduanpowu.cpp

📁 分段抛物插值算法源程序--对学习数值计算是一个很好的资料
💻 CPP
字号:
//分段抛物插值算法源程序:
#include<iostream.h>
#define SIZE 10
void main()
{
	int n,i=1,j=1;
	double xx,yy=1,result=0;
	double x[SIZE];
	double y[SIZE];
	cout<<"**********分段抛物插值**********"<<endl<<endl;
	cout<<"输入已知插值结点总数目(未剔除时应当大于3):   ";
	cin>>n;
	while(n<3)
	{
		cout<<"输入错误,点的数目必须大于3!请重新输入:  ";
		cin>>n;
	}
	cout<<"依次输入第结点的坐标:   x y"<<endl;
	while(i<=n)
	{
		cout<<"第 "<<i<<" 个点的坐标为  ";
		cin>>x[i]>>y[i];
		i++;
	}
	cout<<"输入所求插值结点x坐标:   ";
	cin>>xx;
	if(xx>=x[n-1])
	{
		x[1]=x[n-2];
		x[2]=x[n-1];
		x[3]=x[n];

		y[1]=y[n-2];
		y[2]=y[n-1];
		y[3]=y[n];
	}
{
		for(j=1;j<n;j++)
		{
			if(xx>=x[j]&&xx<=x[j+1])
			{
				if((xx-x[j-1])<=(x[j+2]-xx))
				{
					x[1]=x[j-1];
					x[2]=x[j];
					x[3]=x[j+1];

					y[1]=y[j-1];
					y[2]=y[j];
					y[3]=y[j+1];
				
				}
				else
				{
					x[1]=x[j];
					x[2]=x[j+1];
					x[3]=x[j+2];

					y[1]=y[j];
					y[2]=y[j+1];
					y[3]=y[j+2];
				}
			}
		}
	}
	cout<<"自动筛选后坐标为: "<<x[1]<<","<<y[1]<<"    "<<x[2]<<","<<y[2]<<"    "<<x[3]<<","<<y[3]<<endl;	
	for(i=1;i<=3;i++)
	{
		for(j=1,yy=1;j<=3;j++)
			if(j!=i)yy=yy*(xx-x[j])/(x[i]-x[j]);
		result=result+yy*y[i];
	}
	cout<<"所求y坐标为:  "<<result;
}

⌨️ 快捷键说明

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