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 dense methods such as "dop853"
or "ros4" also work. 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).
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)))
#>
#>
# }
