Data-driven discovery of dynamical systems
The problem
A large chunk of applied mathematics aims to understand dynamical systems and to characterize their behavior.
But what happens if you have a physical system for which you don’t know the governing equations?
You might suspect that there is a set of differential equations pulling the strings, but maybe you are unable or unwilling to derive them analytically.
If you can get your hands on measurements of the system, then you may be able to use a data-driven approach.
A solution
One recently developed method for nonlinear model discovery is the Sparse Identification of Nonlinear Dynamical systems (SINDy).
How it works
The main idea is that the right-hand sides of many dynamical systems of interest do not include many terms, implying that they are sparse with respect to an appropriately chosen basis.
Suppose we have measurements
The vector
In many problems of interest,
is sparse with respect to the set of polynomials in two variables in the sense that just a few of the infinite number of polynomial terms are present on the right-hand side of the equation. So if we pick an appropriate basis
with most coefficients
Mathematical formulation
To apply SINDy one needs a set of measurement data collected at times
Next, one forms a library matrix
We seek a set of sparse coefficient vectors (collected into a matrix)
The vector
Finally, we are ready to write down the approximation problem underlying SINDy:
A sparse regression algorithm is then employed to solve the related minimization problem
The following image shows an overview of the SINDy method applied to the Lorenz equations.
Resources
- The original paper introducing SINDy: Discovering governing equations from data by sparse identification of nonlinear dynamical systems
- A recent paper of mine applying SINDy to a noisy real-world data set: Discovery of physics from data: universal laws and discrepancies
- PySINDy: a Python package for SINDy