ode_cpp {lsoda} | R Documentation |
Ordinary differential equation solver using lsoda (C++ code)
Description
Ordinary differential equation solver using lsoda (C++ code)
Usage
ode_cpp(y, times, func, rtol = 1e-06, atol = 1e-06)
Arguments
y |
vector of initial state values |
times |
vector of times – including the start time |
func |
R function with signature function(t,y) that returns a list: the first list element is a vector for dy/dt; the second list element, if it exists, is a vector of result calculations to be retained. |
rtol |
double for the relative tolerance |
atol |
double for the absolute tolerance |
Value
a matrix for times in the first column and the state andd results values in the other columns.
Examples
times = c(0,0.4*10^(0:10))
y = c(1,0,0)
func = function(t,y) {
ydot = rep(0,3)
ydot[1] = 1.0E4 * y[2] * y[3] - .04E0 * y[1]
ydot[3] = 3.0E7 * y[2] * y[2]
ydot[2] = -1.0 * (ydot[1] + ydot[3])
list(ydot, sum(y))
}
lsoda::ode_cpp(y,times,func, rtol=1e-8, atol=1e-8)
[Package lsoda version 1.2 Index]