lagrange.cpp

来自「五次插值。 这个算法代码可是花了很长的时间」· C++ 代码 · 共 46 行

CPP
46
字号
#include<iostream.h>
#include<iomanip.h>
#define pointnum 6
double Lagrange(double NodeX[],double NodeY[],double x)
{
	int i,j;
	double mid=0.0,result=0.0;
	for(i=0;i<pointnum;i++)
	{
		mid=NodeY[i];
		for(j=0;j<pointnum;j++)
			if(i!=j)
				mid=mid*(x-NodeX[j])/(NodeX[i]-NodeX[j]);
		result=result+mid;
	}
	return result;
}
void main()
{
	int i;
	double result,mid=0.0;
    double NodeX[pointnum]={0.30,0.42,0.50,0.58,0.66,0.72};
	double NodeY[pointnum]={1.04403,1.08462,1.11803,1.15603,1.19817,1.23223};
	double x[4]={0.46,0.55,0.60};
	cout<<"插值节点数值为:"<<endl;

  for(i=0;i<pointnum;i++)
	
	  cout<<setw(10)<<NodeX[i];
  cout<<endl;
for(i=0;i<pointnum;i++)
	
	  cout<<setw(10)<<NodeY[i];
  cout<<endl;
 cout<<"需计算点的值为:"<<endl;
	for(i=0;i<3;i++)
	cout<<setw(6)<<"x["<<i<<"]="<<x[i];
	cout<<endl;
 	for(i=0;i<3;i++)
	{
		result=Lagrange(NodeX,NodeY,x[i]);
	    cout<<"插值点x["<<i<<"]="<<x[i]<<"的函数值为y["<<i<<"]="<<result<<endl;
	}
}

⌨️ 快捷键说明

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