delay(state, T) evaluates an ODE state at the past time t - T, turning
an ordinary differential equation model into a delay differential equation
(DDE). The semantics match the delay() function of Monolix.
Value
Inside an rxode2 model, the value of state at the past time
t - T. Before the start of integration the constant
initial-condition history is used.
Details
Delayed states are interpolated from the solver's dense output, so delay
models are solved on a dense path: the default method becomes the dense
AutoSwitch composite "dop853+ros4", and the dense methods "dop853",
"dop5", "bs", "ros4" and "cvode" also work, as does "liblsoda" with
dense = TRUE (without it, "liblsoda" switches to "dop853+ros4"). The
step size is capped to the smallest delay, and methods that cannot record
dense history raise an error. The dense-output
and delay-history machinery is adapted from the dde package by Rich
FitzJohn and Wes Hinsley (Imperial College of Science, Technology and
Medicine).
See also
Other Special functions:
boxCox(),
erf(),
gammap(),
gammapDer(),
gammapInv(),
gammaq(),
gammaqInv(),
logit(),
lowergamma(),
mexpit(),
mlogit(),
phi(),
phiU(),
probit(),
uppergamma()
Examples
# \donttest{
# Classic linear delay differential equation y'(t) = -y(t - 1)
dde <- rxode2({
y(0) <- 1
d/dt(y) <- -delay(y, 1)
})
#>
#>
s <- rxSolve(dde, et(seq(0, 5, by = 0.1)))
#>
#>
# Delayed (Hutchinson) logistic growth
hutch <- rxode2({
r <- 0.5
K <- 10
tau <- 1
N(0) <- 2
d/dt(N) <- r * N * (1 - delay(N, tau) / K)
})
#>
#>
s2 <- rxSolve(hutch, et(seq(0, 40, by = 0.5)))
#>
#>
# }
