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.
Tons of improvements due to Google Summer of Code. Here’s what’s happened.
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!