Sparse Identification of Nonlinear Dynamics (SINDY)

Copyright 2015, All Rights Reserved
Code by Steven L. Brunton (sbrunton@uw.edu)
For Paper, "Discovering Governing Equations from Data by 
        Sparse Identification of Nonlinear Dynamical Systems" 
Proceedings of the National Academy of Sciences
Vol. 113, No. 15, pp. 3932—3937, 2016.
by S. L. Brunton, J. L. Proctor, and J. N. Kutz

YouTube Video:  https://www.youtube.com/watch?v=gSCa78TIldg

The core algorithms are in the "utils" directory:

    poolData.m (creates nonlinear feature library "Theta")
    sparsifyDynamics (solves for sparse vector of coefficients "Xi" given data... could be replaced with LASSO command in Matlab)
    sparseGalerkin.m (computes new sparse right-hand-side function using sparse vector of coefficients "Xi")

The vector fields used are also in "utils"

Code to generate models and figures for each example (ordered as in the supplement) are given in .m files "EX01" "EX02", etc. in the main directory.

We also use some other functions that are freely available online: 

    TVRegDiff (total-variation regularized differentiation)
	% Please cite Rick Chartrand, "Numerical differentiation of noisy,
	% nonsmooth data," ISRN Applied Mathematics, Vol. 2011, Article ID 164564, 
	% 2011. 
    color_line3 (changes color of line by specified value) 
