[R] Beginners problem

Thomas Petzoldt thpe at hhbio.wasser.tu-dresden.de
Mon Oct 4 23:09:31 CEST 2004


Rolf Wester wrote:
> Hi,
> 
> I'm new to R and have a problem with a little test program (see below). 
> Why doesn't <<- in function rk4

The reason is lexical scoping (see FAQ), and I suggest to implement rk4 
as function with a return value (see # !!!). BTW there are already a rk4 
(and lsoda) functions in the odesolve package.

Thomas P.

Your example formally corrected:

rk4 <- function(x,y,f,h) {
  n  <- length(y)
  hh <- h*0.5
  k1 <- f(x,y)
  k2 <- f(x,y+k1*hh)
  k3 <- f(x,y+k2*hh)
  k4 <- f(x,y+k3*h)
  y + h/6.0*(k1 + 2.0*k2 + 2.0*k3 + k4) # !!!
}

rkf <- function(x,y) {
  -y
}

rktest <- function(){
  y <- 1.0
  x <- 0.0
  h <- 0.1
  for(i in 1:10) {
    y <- rk4(x,y,rkf,h) # !!!
    print(y)
  }
}

rktest()




More information about the R-help mailing list