https://github.com/konrad1991/dsa2a
Experimenting with ast2ast in deSolve
https://github.com/konrad1991/dsa2a
desolve ode ode-solver r
Last synced: 6 months ago
JSON representation
Experimenting with ast2ast in deSolve
- Host: GitHub
- URL: https://github.com/konrad1991/dsa2a
- Owner: Konrad1991
- Created: 2022-11-30T07:36:44.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2023-08-15T08:45:31.000Z (over 2 years ago)
- Last Synced: 2025-02-08T22:25:25.634Z (about 1 year ago)
- Topics: desolve, ode, ode-solver, r
- Language: C++
- Homepage:
- Size: 1.11 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Using ast2ast in deSolve
- experimenting with ast2ast in deSolve
```R
#Rcpp::compileAttributes("dsa2a")
install.packages("dsa2a", type = "source", repos = NULL)
.rs.restartR()
library(dsa2a)
library(deSolve)
library(scatterplot3d)
Lorenz <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
dX <- a * X + Y * Z
dY <- b * (Y - Z)
dZ <- -X * Y + c * Y - Z
list(c(dX, dY, dZ))
})
}
parameters <- c(a = -8/3, b = -10, c = 28)
state <- c(X = 1, Y = 1, Z = 1)
times <- seq(0, 100, by = 0.01)
out <- ode(y = state, times = times, func = Lorenz, parms = parameters)
plot(out)
scatterplot3d(out[,-1], type="l")
out <- ode(state, times, func = "derivs", parms = parameters,
dllname = "dsa2a", initfunc = "initmod")
plot(out)
scatterplot3d(out[,-1], type="l")
out <- ode(state, times, func = "derivs_a2a", parms = parameters,
dllname = "dsa2a", initfunc = "initmod_a2a")
plot(out)
scatterplot3d(out[,-1], type="l")
microbenchmark::microbenchmark(
out <- ode(y = state, times = times, func = Lorenz, parms = parameters),
out <- ode(state, times, func = "derivs", parms = parameters, dllname = "dsa2a", initfunc = "initmod"),
out <- ode(state, times, func = "derivs_a2a", parms = parameters, dllname = "dsa2a", initfunc = "initmod_a2a"))
```