Differential equations (DE) are mathematical equations that describe how a quantity changes as a function of one or several (independent) variables, often time or space. Differential equations play an important role in biology, chemistry, physics, engineering, economy and other disciplines.

Differential equations can be separated into stochastic versus deterministic DEs. Problems can be split into initial value problems versus boundary value problems. One also distinguishes ordinary differential equations from partial differential equations, differential algebraic equations and delay differential equations. All these types of DEs can be solved in R. DE problems can be classified to be either stiff or nonstiff; the former type of problems are much more difficult to solve.

The dynamic models SIG is a suitable mailing list for discussing the use of R for solving differential equation and other dynamic models such as individual-based or agent-based models.

This task view was created to provide an overview on the topic. If we forgot something, or if a new package should be mentioned here, please let us know.

**Stochastic Differential Equations (SDEs)**

- The package
sde provides functions for simulation and inference for stochastic differential equations. It is the accompanying package to the book by Iacus (2008). - The package
pomp contains functions for statistical inference for partially observed Markov processes. - Packages
adaptivetau andGillespieSSA implement Gillespie's "exact" stochastic simulation algorithm (direct method) and several approximate methods. - The package
Sim.DiffProc provides functions for simulation of Itô and Stratonovitch stochastic differential equations. - Package
QPot analyzes 2-dimensional systems of stochastic differential equations using quasi-potential analysis. - Package
rpgm deals about fast simulation especially in Stochastic Differential Equations (SDE) of Itô type. It integrates the Ziggurat method to simulate Normal random variables faster than`rnorm`

, the Brownian motion, the Euler and Milstein schemes, and the Gaussian Vasicek process. Multi-core support will be provided. - Package
diffeqr can solve SDE problems using the**DifferentialEquations.jl**package from the Julia programming language.

**Ordinary Differential Equations (ODEs)**

- The "odesolve" package was the first to solve ordinary differential equations in R.
It contained two integration methods. It has been replaced by the package
deSolve . - The package
deSolve contains several solvers for solving ODE, DAE, DDE and PDE. It can deal with stiff and nonstiff problems. - The package
deTestSet contains solvers designed for solving very stiff equations. - The package
odeintr generates and compiles C++ ODE solvers on the fly using Rcpp and Boost odeint. -
Package
sundialr provides an interface to the 'SUNDIALS' ODE solvers. Currently the serial version 'CVODE' can be accessed. Models can be written in R or C++ using Rcpp. -
The R package
diffeqr provides a seamless interface to the**DifferentialEquations.jl**package from the Julia programming language. It has unique high performance methods for solving ODE, SDE, DDE, DAE and more. Models can be written in either R or Julia. It requires an installation of the Julia language. - Package
pracma implements several adaptive Runge-Kutta solvers such as ode23, ode23s, ode45, or the Burlisch-Stoer algorithm to obtain numerical solutions to ODEs with higher accuracy. - Package
rODE (inspired from the book of Gould, Tobochnik and Christian, 2016) aims to show physics, math and engineering students how ODE solvers can be made with R's S4 classes.

**Delay Differential Equations (DDEs)**

- The package
PBSddesolve (originally published as "ddesolve") includes a solver for non-stiff DDE problems. - Functions in the package
deSolve can solve both stiff and non-stiff DDE problems. - Package
diffeqr can solve DDE problems using the**DifferentialEquations.jl**package from the Julia programming language.

**Partial Differential Equations (PDEs)**

- The R-package
ReacTran provides functions for converting the PDEs into a set of ODEs. Its main target is in the field of ''reactive transport'' modelling, but it can be used to solve PDEs of the three main types. It provides functions for discretising PDEs on cartesian, polar, cylindrical and spherical grids. - The package
deSolve contains dedicated solvers for 1-D, 2-D and 3-D time-varying ODE problems as generated from PDEs (e.g. byReacTran ). - Solvers for 1-D time varying problems can also be found in the package
deTestSet . - The package
rootSolve contains optimized solvers for 1-D, 2-D and 3-D algebraic problems generated from (time-invariant) PDEs. It can thus be used for solving elliptic equations.

**Differential Algebraic Equations (DAEs)**

- The package
deSolve provides two solvers, that can handle DAEs up to index 3. - Three more DAE solvers are in the package
deTestSet . - Package
diffeqr can solve DAE problems using the**DifferentialEquations.jl**package from the Julia programming language.

**Boundary Value Problems (BVPs)**

- Package
bvpSolve deals only with this type of equations. - The package
ReacTran can solve BVPs that belong to the class of reactive transport equations. - Package
diffeqr can also solve BVPs using the**DifferentialEquations.jl**package from the Julia programming language.

**Other**

- The
simecol package provides an interactive environment to implement and simulate dynamic models. Next to DE models, it also provides functions for grid-oriented, individual-based, and particle diffusion models. - Package
scaRabee offers frameworks for simulation and optimization of Pharmacokinetic-Pharmacodynamic Models. - In the package
FME are functions for inverse modelling (fitting to data), sensitivity analysis, identifiability and Monte Carlo Analysis of DE models. - The package
nlmeODE has functions for mixed-effects modelling using differential equations. -
mkin provides routines for fitting kinetic models with one or more state variables to chemical degradation data. - Package
dMod provides functions to generate ODEs of reaction networks, parameter transformations, observation functions, residual functions, etc. It follows the paradigm that derivative information should be used for optimization whenever possible. - The package
CollocInfer implements collocation-inference for continuous-time and discrete-time stochastic processes. - Root finding, equilibrium and steady-state analysis of ODEs can be
done with the package
rootSolve . - The
deTestSet package contains many test problems for differential equations. - The
PBSmodelling package adds GUI functions to models. -
phaseR is an R package for the qualitative analysis of one and two dimensional autonomous ODE systems, using phase plane methods. - Package
cOde supports the automatic creation of dynamically linked code for packagesdeSolve bvpSolve (or a built-in implementation of the sundials cvode solver) from inline C embedded in the R code. - Package
rodeo is an object oriented system and code generator that creates and compiles efficient Fortran code fordeSolve from models defined in stoichiomatry matrix notation. - Package
ecolMod contains the figures, data sets and examples from a book on ecological modelling (Soetaert and Herman, 2009). primer is a support package for the book of Stevens (2009).