Preprint on Differentiable Programming for Differential Equations

Hi Julia Community!

:warning: We wanted to announce the publication of our recent preprint titled Differentiable Programming for Differential Equations: A Review. Here, we explain how different tools (automatic differentiation, discrete and continuous adjoints, finite differences, complex step differentiation, symbolic differentiation) can be applied to differentiate and obtain gradients of functions based on numerical solutions of differential equations.

:closed_book: The manuscript is organized in three main sections:

  • Domain science perspective, where we include examples of how differentiable programming is being used in different fields, including computational physics, geophysics, and biology.
  • Mathematical perspective, where we formalize the numerical foundations of each method.
  • Computational perspective, where we show how these methods are implemented, including code examples and references to the different packages doing this in Julia (e.g., SciMLSensitivity.jl). All the examples are included in our GitHub repository ODINN-SciML/DiffEqSensitivity-Review.

We conclude with a section on recommendations where we give some general guidance of which method to use depending the scientific application.

:rocket: These techniques are a central piece of the SciML ecosystem, so we really hope this manuscript help newcomers, students, and researchers interested in this topic.

:interrobang: Feel free to share any feedback or questions you may have about the manuscript either here or by opening a new issue in our repository.

:people_hugging: Happy to share authorship of this paper with @JordiBolibar @frankschae @bgroenks @avikpal Victor Boussange, Patrick Heimbach, Giles Hooker, Fernando PΓ©rez, Per-Olof Persson and @ChrisRackauckas