On Feb 10, 2013, at 3:35 PM, Jannetta Steyn wrote:

I managed to get it to work (I think). Code below:


The output certainly looks more sensible. You commented out the if- reset strategy and are using events. Can you explain how the event code is triggered? I no longer see a definition of a v>=30 trigger. The vignette says "Events occur when the values of state variables are instantaneously changed. They can be specified as a data.frame, or in a function. Events can also be triggered by a root function." Is the code detecting the sudden rise to infinite values and using that as the trigger for a reset?

--
David.

library(deSolve);
Izhikevich <- function(time, init, parms) {
 with(as.list(c(init, parms)),{
   dv <- (0.04*v^2)+(5*v)+140-u+I;
   du <- a*(b*v-u);
   #if (v>=30) v<-c else v<-u+d;
   list( c(dv, du))
 })}
parms=c( a=0.02, b=0.2, c=-65, d=2, I=4);
times=seq(from=1, to=500, by=0.1);
init=c(v=-65, u=0.2);

root <- function(time, init, parms) init[1]

event <- function(time, init, parms) {
 with(as.list(c(init, parms)), {
 init[2] <- init[1] + d
 init[1] <- c
 return(init)
 })
}

out<-ode(y=init, times=times, func=Izhikevich, parms=parms,
events=list(func=event, root=TRUE), rootfun=root)
plot(out)


Thanks everybody for their help.

Jannetta

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
Alameda, CA, USA

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to