📄 cubicspline.cpp
字号:
// Cubicspline.cpp: implementation of the Cubicspline class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Cubicspline.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
void Cubicspline::cal(double DATA[100][2],double var_y1,double var_y2)
{
int i;
der_y1=var_y1;
der_y2=var_y2;
for(i=1;DATA[i+1][0]>-999999&&DATA[i+1][0]<999999;i++)
{str[i]=(DATA[i+1][0]-DATA[i][0])/(DATA[i][0]-DATA[i-1][0]+DATA[i+1][0]-DATA[i][0]);
}
for(i=1;DATA[i+1][0]>-999999&&DATA[i+1][0]<999999;i++)
{dtr[i]=(DATA[i][0]-DATA[i-1][0])/(DATA[i][0]-DATA[i-1][0]+DATA[i+1][0]-DATA[i][0]);
}
for(i=1;DATA[i+1][0]>-999999&&DATA[i+1][0]<999999;i++)
{y[i]=3*(str[i]*(DATA[i-1][1]-DATA[i][1])/(DATA[i-1][0]-DATA[i][0])+dtr[i]*(DATA[i+1][1]-DATA[i][1])/(DATA[i+1][0]-DATA[i][0]));
}
chasing(DATA);
}
/////////////////////////////////////////////////////////////////////
void Cubicspline::chasing(double DATA[100][2])
{double b[100],y1[100];
int i,j;
for(i=1;DATA[i+2][0]>-999999&&DATA[i+2][0]<999999;i++)
{if(i==1)
{b[i]=dtr[i]/2;}
else
{b[i]=dtr[i]/(2-str[i]*b[i-1]);}
}
for(i=1;DATA[i+1][0]>-999999&&DATA[i+1][0]<999999;i++)
{if(i==1)
{y1[i]=y[i]/2;}
else
{y1[i]=(y[i]-str[i]*y1[i-1])/(2-str[i]*b[i-1]);}
}
for(j=i-1;j>=1;j--)
{if(j=i-1)
{m[j]=y1[j];}
else
{m[j]=y1[j]-b[j]*m[j+1];}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -