CRAN Task View: Differential Equations

Maintainer:Thomas Petzoldt, Karline Soetaert
Contact:thomas.petzoldt at
Contributions:Suggestions and improvements for this task view are very welcome and can be made through issues or pull requests on GitHub or via e-mail to the maintainer address. For further details see the Contributing guide.
Citation:Thomas Petzoldt, Karline Soetaert (2023). CRAN Task View: Differential Equations. Version 2023-05-25. URL
Installation:The packages from this task view can be installed automatically using the ctv package. For example, ctv::install.views("DifferentialEquations", coreOnly = TRUE) installs all the core packages or ctv::update.views("DifferentialEquations") installs all packages that are not yet installed and up-to-date. See the CRAN Task View Initiative for more details.

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 something is missing, or if a new package should be mentioned here, please e-mail the maintainers or submit an issue or pull request in the GitHub repository linked above.

Stochastic Differential Equations (SDEs)

In a stochastic differential equation, the unknown quantity is a stochastic process.

Ordinary Differential Equations (ODEs)

In an ODE, the unknown quantity is a function of a single independent variable. Several packages offer to solve ODEs.

Delay Differential Equations (DDEs)

In a DDE, the derivative at a certain time is a function of the variable value at a previous time.

Partial Differential Equations (PDEs)

PDEs are differential equations in which the unknown quantity is a function of multiple independent variables. A common classification is into elliptic (time-independent), hyperbolic (time-dependent and wavelike), and parabolic (time-dependent and diffusive) equations. One way to solve them is to rewrite the PDEs as a set of coupled ODEs, and then use an efficient solver.

Note that, to date, PDEs in R can only be solved using finite differences. At some point, we hope that finite element and spectral methods will become available.

Differential Algebraic Equations (DAEs)

Differential algebraic equations comprise both differential and algebraic terms. An important feature of a DAE is its differentiation index; the higher this index, the more difficult to solve the DAE.

Boundary Value Problems (BVPs)

BVPs have solutions and/or derivative conditions specified at the boundaries of the independent variable.

Model Analysis and Calibration

Compiled Code

Population ODE modeling


CRAN packages

Core:deSolve, rootSolve, sde.
Regular:adaptivetau, cOde, CollocInfer, dde, deFit, diffeqr, dMod, ecolMod, fitode, FME, GillespieSSA, magi, mkin, mrgsolve, nlmixr2, ODEsensitivity, odin, PBSddesolve, PBSmodelling, phaseR, pomp, pracma, r2sundials, ReacTran, resde, rODE, rodeo, rxode2, sensitivity, Sim.DiffProc, simecol.

Related links