[R] How to change parameter values as a function to time with the package "deSolve"

Marine Regis marine.regis at hotmail.fr
Thu Mar 23 22:59:21 CET 2017


Hello,

I am trying to solve an ODE in R using deSolve. With the following code, I expected the parameter “gamma0” takes the values 5 at time step 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 and 10, and 0 otherwise. However, the print(gamma0) shows that “gamma0” stays at 0.

Here is my ODE:

param <- c(a = 0.1, b = 1)
yini <- c(alpha0 = 0, beta0 = 0)

mod <- function(times, yini, param) {

  with(as.list(c(yini, parameters)), {

  gamma0 <- ifelse(times %in% seq(0,10,1), 5, 0)

  # print(gamma0)

  dalpha0 <- - a*alpha0 + gamma0
  dbeta0 <- a*alpha0 - b*beta0
  return(list(c(dalpha0, dbeta0)))

  })}

times <- seq(from = 0, to = 10, by = 1/24)
out <- ode(func = mod, times = times, y = yini, parms = param)
plot(out, lwd = 2, xlab = "day")


What am I doing wrong? Thanks in advance for your help!
Marine


	[[alternative HTML version deleted]]



More information about the R-help mailing list