📄 hermitedif.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 + -