我想使用deSolve R 包中的显式 Runge-Kutta 方法ode45(别名 rk45dp7)来解决可变步长的 ODE 问题。
根据 deSolve 文档,可以使用 ode45 方法对rk求解器函数使用自适应或可变时间步长,而不是等距时间步长,但我不知道如何做到这一点。
rk 函数是这样调用的:
rk(y, times, func, parms, rtol = 1e-6, atol = 1e-6, verbose = FALSE, tcrit = NULL,
hmin = 0, hmax = NULL, hini = hmax, ynames = TRUE, method = rkMethod("rk45dp7", ... ),
maxsteps = 5000, dllname = NULL, initfunc = dllname, initpar = parms, rpar = NULL,
ipar = NULL, nout = 0, outnames = NULL, forcings = NULL, initforc = NULL, fcontrol =
NULL, events = NULL, ...)
其中times是需要明确估计 y 的时间向量。
对于距离为 0.01 的等距时间步,我可以将时间写为
times <- seq(0, 100, 0.01)
假设我想求解从 0 到 100 的区间的方程,如何在不给出步长的情况下定义时间?
任何帮助将不胜感激。