We can use the mosaic package to do integration.
First run install.packages("mosaic") on your systems. You may need to do it 2x as it errored on a few systems last time.
You can test if it worked by doing:
library(mosaic)
and seeing if you get any errors
Now, say we have a simple logistic growth differential equation:
\(\frac{dx}{dt} = {r}{x}(1 - {x}/{K})\)
we can use the function integrateODE in the mosaic package to get the solution which we can then use for plotting/computation/etc. We need to give it the initial state for all the parameters and the duration (tdur) or range of time for the resultant function:
soln = integrateODE( dx ~ r * x * (1 - x/K), x=1, K=10, r=0.5,
tdur = list(from=0, to=20))
the pretty math formulas are easy to map into R syntax.
Now we can evaluate the function for individual or ranges of time:
print(soln$x(0))
## [1] 1
print(soln$x(1))
## [1] 1.548281
print(soln$x(3))
## [1] 3.324279
print(soln$x(0:20))
## [1] 1.000000 1.548281 2.319693 3.324279 4.508531 5.751209 6.905679
## [8] 7.863017 8.584864 9.091066 9.428256 9.645239 9.781781 9.866497
## [15] 9.918599 9.950469 9.969899 9.981721 9.988905 9.993268 9.995916
and, we can plot it, too.
plotFun(soln$x(t)~t, tlim=range(0, 20))
and we can compare solutions as well. Here, we modify K a couple times:
soln2 = integrateODE( dx ~ r * x * (1 - x/K), x=1, K=20, r=0.5,
tdur = list(from=0, to=20))
soln3 = integrateODE( dx ~ r * x * (1 - x/K), x=1, K=5, r=0.5,
tdur = list(from=0, to=20))
plotFun(soln$x(t)~t, tlim=range(0, 20))
plotFun(soln2$x(t)~t, tlim=range(0, 20), add=TRUE, col="red")
plotFun(soln3$x(t)~t, tlim=range(0, 20), add=TRUE, col="green")