!using["XSLSF"]; //使用命名空间XSLSF
//函数定义,用于计算微分方程组中各方程右端函数值,连分式法对微分方程组积分一步函数pbs1将调用该函数f。
//t为自变量,a1,a2,a3,a4,a6为函数值,da1,da2,da3,da4,da6为右端函数值(即微分方程的值)。
//该函数被调用时将用到参数k1,k2,k3,k4,k5,k7,k8,k9,这8个参数正好是拟合参数,用模块变量传递这8个参数。
f(t,a1,a2,a3,a4,a6,da1,da2,da3,da4,da6:x:k1,k2,k3,k4,k5,k7,k8,k9)=
{
da1=a1-k1*a1^2+k2*a3-k5*a1*a2-k7*a4*a1+k8*a6-k9*a4*a1,
da3=k1*a1^2-k2*a3-k3*a3+k4*a2,
da2=k3*a3-k4*a2-k5*a2*a1,
da4=k5*a2*a1-k7*a4*a1+k8*a6-k9*a4*a1^2,
da6=k7*a3*a1-k8*a6
};
//用连分式法对微分方程组进行积分,获得理论值。
//t1,t2为积分的起点和终点。
//h,s为自动变量。
//模块变量:hf为函数f的句柄,要预先获得该句柄;Array为工作数组;step为积分步长;eps为积分精度。
积分(t1,t2:h,s:hf,Array,step,eps)=
{
s=ceil[(t2-t1)/step],