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

📄 hermitedif.cpp

📁 hermite差分
💻 CPP
字号:
#include "HermiteDif.h"

HermiteDif::HermiteDif(void)
{
}
HermiteDif::HermiteDif(int n,double temX[],double temY[],double dy[])
{
	CalPara(n,temX,temY,dy);
}
bool HermiteDif::CalPara(int n,double temX[],double temY[],double dy[])
{
	if(n>1000||n<1)return false;
	int i=0;
	num=n;
	double *z=new double[2*n+2];
	double **Q=new double*[2*n+2];
	for(i=0;i<2*n+2;i++)
	{
		Q[i]=new double[2*n+2];
	}
	for(i=0;i<=n;i++)
	{
		x[i]=temX[i];
		z[2*i]=x[i];
		z[2*i+1]=x[i];
		Q[2*i][0]=temY[i];
		Q[2*i+1][0]=temY[i];
		Q[2*i+1][1]=dy[i];
		if(i!=0)
		{
			Q[2*i][1]=(Q[2*i][0]-Q[2*i-1][0])/(z[2*i]-z[2*i-1]);
		}
	}
	for(i=2;i<=2*n+1;i++)
	{
		for(int j=2;j<=i;j++)
		{
			Q[i][j]=(Q[i][j-1]-Q[i-1][j-1])/(z[i]-z[i-j]);
		}
	}
	for(i=0;i<=2*n+1;i++)
	{
		HerPara[i]=Q[i][i];
	}
	return true;
}
double HermiteDif::getValue(double oneX)
{
	double result=0;
	result=HerPara[0];
	for(int i=1;i<=2*num+1;i++)
	{
		double tem=HerPara[i];
		for(int j=0;j<i;j++)
		{
			tem=tem*(oneX-x[j/2]);
		}
		result=result+tem;
	}
	return result;
}
double * HermiteDif::getPara()
{
	return HerPara;
}
HermiteDif::~HermiteDif(void)
{
}

⌨️ 快捷键说明

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