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

📄 rk4.cpp

📁 c++的数学物理方程数值算法源程序。这是"Numerical Methods for Physics"第二版的源程序。
💻 CPP
字号:
#include "NumMeth.h"void rk4(double x[], int nX, double t, double tau, 
  void (*derivsRK)(double x[], double t, double param[], double deriv[]),   double param[]) {// Runge-Kutta integrator (4th order)// Inputs//   x          Current value of dependent variable//   nX         Number of elements in dependent variable x
//   t          Independent variable (usually time)//   tau        Step size (usually time step)//   derivsRK   Right hand side of the ODE; derivsRK is the//              name of the function which returns dx/dt//              Calling format derivsRK(x,t,param,dxdt).//   param      Extra parameters passed to derivsRK// Output//   x          New value of x after a step of size tau  double *F1, *F2, *F3, *F4, *xtemp;  F1 = new double [nX+1];  F2 = new double [nX+1];  F3 = new double [nX+1];  F4 = new double [nX+1];  xtemp = new double [nX+1];    //* Evaluate F1 = f(x,t).  (*derivsRK)( x, t, param, F1 );    //* Evaluate F2 = f( x+tau*F1/2, t+tau/2 ).  double half_tau = 0.5*tau;  double t_half = t + half_tau;
  int i;  for( i=1; i<=nX; i++ )    xtemp[i] = x[i] + half_tau*F1[i];  (*derivsRK)( xtemp, t_half, param, F2 );    //* Evaluate F3 = f( x+tau*F2/2, t+tau/2 ).  for( i=1; i<=nX; i++ )    xtemp[i] = x[i] + half_tau*F2[i];  (*derivsRK)( xtemp, t_half, param, F3 );  //* Evaluate F4 = f( x+tau*F3, t+tau ).  double t_full = t + tau;  for( i=1; i<=nX; i++ )    xtemp[i] = x[i] + tau*F3[i];  (*derivsRK)( xtemp, t_full, param, F4 );  //* Return x(t+tau) computed from fourth-order R-K.  for( i=1; i<=nX; i++ )    x[i] += tau/6.*(F1[i] + F4[i] + 2.*(F2[i]+F3[i]));      delete [] F1, F2, F3, F4, xtemp; }

⌨️ 快捷键说明

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