StepODE {smfsb} | R Documentation |
Create a function for advancing the state of an ODE model by using the deSolve package
Description
This function creates a function for advancing the state of an ODE model
using an integration method from the deSolve
package. The
resulting function (closure) can be used in conjunction with other
functions (such as simTs
) for simulating realisations of
ODE models. This function is used similarly to StepEuler
,
but StepODE
should be more accurate and efficient.
Usage
StepODE(RHSfun)
Arguments
RHSfun |
A function representing the RHS of the ODE model. |
Value
An R function which can be used to advance the state of the ODE model
RHSfun
by using an efficient ODE solver. The function closure has interface function(x0,t0,deltat,parms,...)
, where t0
and x0
represent the initial time and state, and deltat
represents the amount of time by which the process should be advanced. The function closure returns a vector representing the simulated state of the system at the new time.
See Also
StepEulerSPN
, StepEuler
,
simTs
, ode
Examples
# Build a RHS for the Lotka-Volterra system
LVrhs <- function(x,t,parms)
{
with(as.list(c(x,parms)),{
c( c1*x1 - c2*x1*x2 ,
c2*x1*x2 - c3*x2 )
})
}
# create a stepping function
stepLV = StepODE(LVrhs)
# step the function
print(stepLV(c(x1=50,x2=100),0,1,parms=c(c1=1,c2=0.005,c3=0.6)))
# integrate the process and plot it
out = simTs(c(x1=50,x2=100),0,50,0.1,stepLV,parms=c(c1=1,c2=0.005,c3=0.6))
plot(out,plot.type="single",lty=1:2)