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!
Okay, this is a quick release. However, There’s so much good stuff coming out that I don’t want them to overlap and steal each other’s thunder! This release has two long awaited features for increasing the ability to automatically solve difficult differential equations with less user input.
DifferentialEquations.jl 4.2: Krylov Exponential Integrators, Non-Diagonal Adaptive SDEs, Tau-Leaping
This is a jam packed release. A lot of new integration methods were developed in the last month to address specific issues of community members. Some of these methods are one of a kind!