This marks the release of DifferentialEquations.jl. There will be an accompanying
summary blog post which goes into more detail about our current state and sets
the focus for the organization’s v6.0 release. However, for now I would like
to describe some of the large-scale changes which have been included in this
release. Much thanks goes to the Google Summer of Code students who heavily
contributed to these advances.

Once again we stayed true to form and didn’t solve the problems in the
development list but adding a ton of new features anyways. Now that Google
Summer of Code (GSoC) is in full force, a lot of these updates are due to
our very awesome and productive students. Here’s what we got.

Differential equations are used for modeling throughout the sciences from astrophysical calculations to simulations of biochemical interactions. These models have to be simulated numerically due to the complexity of the resulting equations. However, numerical solving differential equations presents interesting software engineering challenges. On one hand, speed is of utmost importance. PDE discretizations quickly turn into ODEs that take days/weeks/months to solve, so reducing time by 5x or 10x can be the difference between a doable and an impractical computation. But these methods are difficult to optimize in a higher level language since a lot of the computations are small, hard to vectorize loops with a user-defined function directly in the middle (one SciPy developer described it as a “worst case scenario for Python”) . Thus higher level languages and problem-solving environments have resorted to a strategy of wrapping C++ and Fortran packages, and as described in a survey of differential equation solving suites, most differential equation packages are wrapping the same few methods.

These are features long hinted at. The
Arxiv paper is finally up and the new
methods from that paper are the release. In this paper I wanted to “complete”
the methods for additive noise and attempt to start enhancing the methods for
diagonal noise SDEs. Thus while it focuses on a constrained form of noise, this
is a form of noise present in a lot of models and, by using the constrained form,
allows for extremely optimized methods. See the
updated SDE solvers documentation
for details on the new methods. Here’s what’s up!