[R-sig-dyn-mod] Turbidostat Model
Thomas Petzoldt
Thomas.Petzoldt at tu-dresden.de
Wed Dec 8 14:37:38 CET 2010
Hello Uta,
deSolve provides several mechanisms to approach this. I would suggest to
use forcing functions:
signal <- approxfun(1:10, rep(c(1, 0.1), each=5))
growth <- function(t, x, parms) {
korr <- signal(t) # interpolates linearly
with(as.list(c(x, parms)), {
dy <- r * korr * x
list(dy)
})
}
times <- seq(1, 10, 0.1)
parms <- c(r=1)
y <- 1
out <- ode(y, times, growth, parms)
plot(out)
This interpolates linearly between the values specified in the signal
and you can, of course, also use other interpolation rules as well.
Alternatively, abrupt changes can also be modelled with events. Then,
korr has to be an additional state variable with derivative zero (dkorr
<-0) and events are used to manipulate it as needed.
Thomas Petzoldt
--
Dr. Thomas Petzoldt
Technische Universitaet Dresden
Fakulty of Forest, Geo and Hydro Sciences
Institute of Hydrobiology
01062 Dresden, Germany
http://tu-dresden.de/Members/thomas.petzoldt
More information about the R-sig-dynamic-models
mailing list