使用命名空间std;#包括#包括#包括“task.h”类kepler_item:公共任务列表项{公众:kepler_item(常量字符串名称):任务列表项(名称){}虚拟线人信息;虚拟设置程序设置;虚拟EoM_eval EoM;虚拟哈密尔顿哈密尔;};开普勒项目my_kepler_item(“开普勒轨道”);void kepler_item::info(FLP*tbegin,FLP*tend,FLP*步长,INT*ndim){*ndim=2;*tbegin=0。;*趋势=M_PIl*2;*步长=.01;aux=“0.6”;//偏心,偏心}/////////////////////////////设置初始条件////qex、pex是运行结束时“预期”的值//void kepler_item::setup(const FLP/*t开始未使用*/,const FLP/*倾向于不使用*/,INT/*ndim未使用*/,FLP*q、FLP*p、FLP*qex、FLP*pex、FLP*rpar、INT*ipar){FLP偏心(atof(aux.c_str()));q[0]=1-椭圆曲线;q[1]=0。;p[0]=0。;p[1]=sqrt((eccent+1)/(1-eccent));qex[0]=1-椭圆曲线;qex[1]=0。;pex[0]=0。;pex[1]=sqrt((eccent+1)/(1-eccent));}/*kepler_setup(开普勒设置)*/////////////////////////计算运动方程//void kepler_item::EoM(常量INT/*ndim未使用*/,FLP/*t目前未使用*/,FLP*q,FLP*f、FLP*rpar、INT*ipar){++eom_evals;FLP半径=q[0]*q[0]+q[1]*q[1];半径*=sqrt(半径);f[0]=-q[0]/半径;f[1]=-q[1]/半径;}/*开普勒_EoM*///////////////////////////////////评估能量//FLP kepler_item::hamil(常数INT ndim,常数FLP tnow,FLP*q,FLP*p、FLP*rpar、INT*ipar){/*系统生成的局部变量*/FLP d_1、d_2、d_3、d_4;/*参数调整*/FLP*p_X1(p-1);FLP*q_X1(q-1);/*功能Bdy*/d_1=p_X1[1];d_2=p_X1[2];d_3=q_X1[1];d_4=q_X1[2];返回(d_1*d_1+d_2*d_2)*.5-1/sqrt(d_3*d_3+d_4*d_4);}/*开普勒哈密顿量*/