You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/landscape-of-ode-solvers-in-r/index.md
+17-15Lines changed: 17 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,27 +50,31 @@ We intentionally exclude:
50
50
Some tools included in this review go beyond ODE solving and provide additional capabilities such as parameter estimation or simulation workflows. We include them for completeness, without going into those advanced features.
51
51
52
52
## Overview table
53
+
<divclass="table-h-scroll">
53
54
54
-
| Package |Type|Engine| Algorithms | Model format | Stiff | DAE | DDE | Time events | Conditional events | CRAN downloads (2025) |
55
+
| Package |Engine|Type| Algorithms | Model format | Stiff | DAE | DDE | Time events | Conditional events | CRAN downloads (2025) |
|[deSolve](https://cran.r-project.org/package=deSolve)|Compiled |[ODEPACK](http://www.netlib.org/odepack/); [DASPK](http://www.netlib.org/ode/) (in FORTRAN) | lsoda, lsode, radau, euler, rk4, ode23, ode45, etc. | R func (Interpreted); C / C++ / Fortran (Compiled) | Yes (via lsoda) | Yes (via daspk) | Yes (via dede) | Yes | Yes | 635628 |
57
+
|[deSolve](https://cran.r-project.org/package=deSolve)|[ODEPACK](http://www.netlib.org/odepack/); [DASPK](http://www.netlib.org/ode/) (in FORTRAN)| Compiled| lsoda, lsode, radau, euler, rk4, ode23, ode45, etc. | R func (Interpreted); C / C++ / Fortran (Compiled) | Yes (via lsoda) | Yes (via daspk) | Yes (via dede) | Yes | Yes | 635628 |
57
58
58
-
#### Type
59
+
</div>
59
60
60
-
-**Pure R solvers**: Numerical algorithms implemented directly in R. These are easy to inspect and flexible, but typically slower due to interpreter overhead.
61
-
-**Compiled solvers**: Implemented in C/C++/Fortran or wrapping established libraries (e.g., ODEPACK). These provide significantly better performance and are the default choice for most applications.
62
-
-**External runtime interfaces**: Packages that delegate computation to external ecosystems such as Julia or Python. These act as bridges rather than standalone solvers.
61
+
#### Engine
63
62
64
-
#### Engine / Algorithms
65
-
66
-
-**Engine** refers to the underlying numerical implementation used by the package. This can be:
63
+
This refers to the underlying numerical implementation used by the package. This can be:
67
64
- a well-known external library (e.g., ODEPACK),
68
65
- a custom compiled implementation,
69
66
- or an external runtime (e.g., Julia),
70
67
- another R package.
68
+
69
+
#### Type
70
+
71
+
-**Pure R solvers**: Numerical algorithms implemented directly in R. These are easy to inspect and flexible, but typically slower due to interpreter overhead.
72
+
-**Compiled solvers**: Implemented in C/C++/Fortran or wrapping established libraries (e.g., ODEPACK). These provide significantly better performance and are the default choice for most applications.
73
+
-**External runtime interfaces**: Packages that delegate computation to external ecosystems such as Julia or Python. These act as bridges rather than standalone solvers.
74
+
75
+
#### Algorithms
71
76
72
-
-**Algorithms** lists the available numerical methods (e.g., LSODA, Runge–Kutta, Radau).
73
-
Some packages expose multiple algorithms, while others are limited to a specific class.
77
+
This is the list of available numerical methods (e.g., LSODA, Runge–Kutta, Radau).
74
78
75
79
#### Model format
76
80
@@ -83,9 +87,7 @@ The key distinction affecting performance is how the model is executed:
83
87
84
88
#### Stiff
85
89
86
-
Indicates whether the solver can handle **stiff systems**.
87
-
88
-
Stiffness arises when a system contains processes evolving on very different time scales. Solvers that support stiffness typically use implicit methods or adaptive switching (e.g., LSODA).
90
+
Indicates whether the solver can handle **stiff systems**. Stiffness arises when a system contains processes evolving on very different time scales. Solvers that support stiffness typically use implicit methods or adaptive switching (e.g., LSODA).
89
91
90
92
#### DAE / DDE
91
93
@@ -103,7 +105,7 @@ These features are important for modeling real-world systems with discontinuitie
103
105
104
106
#### CRAN downloads
105
107
106
-
Total number of downloads in 2025, reflecting usage statistics.
108
+
Total number of downloads in 2025, reflecting usage statistics. Calculated with [CRAN logs](https://cranlogs.r-pkg.org/) service.
0 commit comments