Solving Ordinary Differential Equations in Python

Solving Ordinary Differential Equations in Python

The Simula SpringerBriefs on Computing book series provides introductions to select areas of research in computing that can otherwise be inaccessible. In volume 15 of the series, Solving Ordinary Differential Equations in Python, Joakim Sundnes addresses the issue of choosing the right solver for ODEs.

Formulating and solving ODEs is an essential part of mathematical modeling and computational science, and numerous solvers are available in commercial and open source software. However, no single ODE solver is universally optimal and efficient for all ODE problems, and the choice of solver should always be based on the specific characteristics of the problem at hand. To make the right choice, it is extremely beneficial to understand the strengths and weak- nesses of different solvers. The best way to gain this knowledge is by programming your own collection of ODE solvers.

Solving Ordinary Differential Equations in Python, walks readers through this process, focusing on the large and widely used class of solvers known as Runge-Kutta methods. Explicit and implicit methods are motivated and explained, as well as methods for error control and automatic time step selection, and all the solvers are implemented as a class hierarchy in Python.

The book’s presentation style is compact and pragmatic, incorporating numerous code examples to illustrate how various ODE solvers can be implemented and applied in practice. The complete source code for all examples, as well as Jupyter notebooks for each chapter, are provided in the accompanying online resources. The programs and code examples are written in a simple and compact Python style, avoiding the use of advanced tools and features.

Open access

As with all the Simula SpringerBriefs on Computing, this volume is open access under a CC BY 4.0 license and was published by SpringerOpen.

About the author

Joakim Sundnes is Director of SRL Research at Simula Research Laboratory and teaches undergraduate programming at the University of Oslo. His research interests are scientific computing and computational science, particularly related to biomechanics and computational physiology. Mathematical models in these fields are typically formulated as differential equations, and he has spent more than two decades developing and implementing solvers for these models. He is also responsible for the main introductory programming class for natural science students at the University of Oslo, which includes a thorough introduction to ordinary differential equations.