O que é SINDy?

Sparse Identification of Nonlinear Dynamics: descobre as equações diferenciais de um sistema, assumindo que poucos termos de uma biblioteca de candidatos bastam para descrever a dinâmica (Brunton et al. 2016; Schmidt e Lipson 2009).

Formulação

Do estado medido \(X\) e sua derivada \(\dot X\), constrói-se uma biblioteca de candidatos e resolve-se uma regressão esparsa:

\[ \Theta(X) = \begin{bmatrix} 1 & X & X^2 & \sin(X) & \cdots \end{bmatrix} \qquad \dot X = \Theta(X)\,\Xi, \quad \Xi \text{ esparsa} \]

Coeficiente \(\Xi_{j,i}\ne 0\): o \(j\)-ésimo candidato participa da equação de \(\dot x_i\).

O Algoritmo STLSQ

  1. Ajusta-se \(\Xi\) por mínimos quadrados: \(\Xi \leftarrow \Theta^\dagger \dot X\);
  2. Zeram-se coeficientes com \(|\Xi_{j,i}| < \tau\);
  3. Reajustam-se só os sobreviventes; repete-se até convergir.

Nota

\(\tau\) equilibra esparsidade e ajuste aos dados.

Por que Esparsidade?

A maioria dos sistemas físicos é descrita por poucos termos — a esparsidade evita sobreajuste e dá um modelo interpretável.

Sensível a ruído em \(\dot X\): normalmente exige filtragem ou diferenciação robusta.

Extensões

Robustez a Ruído

  • SR3: relaxa o corte abrupto do limiar, mais estável (Zheng et al. 2019);
  • Ensemble-SINDy: agrega modelos de subamostras bootstrap, robusto a ruído alto (Fasel et al. 2022).

Software e Aplicação a Controle

PySINDy implementa STLSQ, SR3, SINDYc e bibliotecas prontas (Silva et al. 2020; Kaptanoglu et al. 2022) — aqui usamos só numpy para deixar o algoritmo explícito.

O modelo esparso \(\dot x=\Theta(x)\Xi\) vira planta para MPC não linear ou linearização por realimentação (Kaiser et al. 2018).

Referências

Brunton, Steven L., Joshua L. Proctor, e J. Nathan Kutz. 2016. «Discovering Governing Equations from Data by Sparse Identification of Nonlinear Dynamical Systems». Proceedings of the National Academy of Sciences 113 (15): 3932–37. https://doi.org/10.1073/pnas.1517384113.
Champion, Kathleen, Bethany Lusch, J. Nathan Kutz, e Steven L. Brunton. 2019. «Data-Driven Discovery of Coordinates and Governing Equations». Proceedings of the National Academy of Sciences 116 (45): 22445–51. https://doi.org/10.1073/pnas.1906995116.
Fasel, Urban, J. Nathan Kutz, Bingni W. Brunton, e Steven L. Brunton. 2022. «Ensemble-SINDy: Robust Sparse Model Discovery in the Low-Data, High-Noise Limit, with Active Learning and Control». Proceedings of the Royal Society A 478: 20210904. https://doi.org/10.1098/rspa.2021.0904.
Kaiser, Eurika, J. Nathan Kutz, e Steven L. Brunton. 2018. «Sparse Identification of Nonlinear Dynamics for Model Predictive Control in the Low-Data Limit». Proceedings of the Royal Society A 474: 20180335. https://doi.org/10.1098/rspa.2018.0335.
Kaptanoglu, Alan A., Brian M. de Silva, Urban Fasel, et al. 2022. «PySINDy: A Comprehensive Python Package for Robust Sparse System Identification». Journal of Open Source Software 7 (69): 3994. https://doi.org/10.21105/joss.03994.
Rudy, Samuel H., Steven L. Brunton, Joshua L. Proctor, e J. Nathan Kutz. 2017. «Data-Driven Discovery of Partial Differential Equations». Science Advances 3 (4): e1602614. https://doi.org/10.1126/sciadv.1602614.
Schmidt, Michael, e Hod Lipson. 2009. «Distilling Free-Form Natural Laws from Experimental Data». Science 324 (5923): 81–85. https://doi.org/10.1126/science.1165893.
Silva, Brian M. de, Kathleen Champion, Markus Quade, Jean-Christophe Loiseau, J. Nathan Kutz, e Steven L. Brunton. 2020. «PySINDy: A Python Package for the Sparse Identification of Nonlinear Dynamics from Data». Journal of Open Source Software 5 (49): 2104. https://doi.org/10.21105/joss.02104.
Zheng, Peng, Travis Askham, Steven L. Brunton, J. Nathan Kutz, e Aleksandr Y. Aravkin. 2019. «A Unified Framework for Sparse Relaxed Regularized Regression: SR3». IEEE Access 7: 1404–23. https://doi.org/10.1109/ACCESS.2018.2886528.