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

📄 cubicspline.cpp

📁 数值分析的简单算法VC++实现
💻 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 + -