I have a problem integrating the 'standard map' (
http://en.wikipedia.org/wiki/Standard_map
http://en.wikipedia.org/wiki/Standard_map ) with deSolve:

By using the modulo-operator '%%' with 2*pi in the ODEs (standardmap1), the
resulting values of P and Theta, should not be greater than 2pi. Because
this was not the case, i was thinking that the function 'ode' has some
internal problems with the '%%' or integrating periodical ODEs, so I wrote a
modulo-function by myself (modulo and standardmap2). But still I get values
much higher than 2pi and I cannot find the error... Any guess?

Thanks


Full code:
----------------------------------------------------------------
library(deSolve)


iterations <- 100

Parameter <- c(k = 0.6)
State <- c(Theta = 1 ,  P = 1) 

Time <- 0:iterations/10




standardmap1 <- function(Time, State, Parameter){ 
  with(as.list(c(State, Parameter)), {
        dP  <- (P + k * sin(Theta)) %% (2 * pi)
        dTheta <- (P + Theta) %% (2 * pi)
return(list(c(dP, dTheta)))
})
}

#solve ode using standardmap1
out1 <- as.data.frame(ode(func = standardmap1, y = State,parms = Parameter,
times = Time))




# x mod y, end: maximal iterations
modulo <- function(x,y,end=1000){
        for (n in 0:end)
                if (x > (n-1)*y) 
                        z = x - (n-1)*y
                        if (z > 0)
                                return(z)
                        else break
}



standardmap2 <- function(Time, State, Parameter){
  with(as.list(c(State, Parameter)), {
        dTheta <- modulo((P + Theta),(2*pi))
        dP <- modulo(P + k *sin(Theta),(2*pi))
return(list(c(dP, dTheta)))
})
}



#solve ode using standardmap2
out2 <- as.data.frame(ode(func = standardmap2, y = State,parms = Parameter,
times = Time))

#plot the results
matplot(out1[2],out1[3], type = "p", pch = ".")
matplot(out2[2],out2[3], type = "p", pch = ".")
-- 
View this message in context: 
http://r.789695.n4.nabble.com/deSolve-Problem-solving-ODE-including-modulo-operator-tp3236396p3236396.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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