# [R] deSolve: Problem solving ODE including modulo-operator

apokaly albert2002 at gmx.de
Tue Jan 25 16:52:22 CET 2011

```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,out1, type = "p", pch = ".")
matplot(out2,out2, 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.

```