Open ibrahimw1 opened 1 month ago
Hey, thanks for using the package! One of the challenges with SINDy-PI is that the number of models it searches grows combinatorially. The other issue is that there's often multiple ways of representing complex problems in pysindy. My guess is that the result in this paper required a lot of engineering.
That said, it's best if you can aggressively limit the number of features first to make sure you data generation is correct, then work more generally. Here's some suggestions:
inputs_per_library
to make sure that they only act on the control variable.lib.get_feature_names()
to know what features to expect.Admittedly, this is the part of the library that I understand the least.
Firstly, thank you for making this package. I'm currently working on a research project involving the application of SINDy-PI from the PySINDy library. My specific focus is on modeling a double pendulum system, which involves equations with trigonometric functions such as sine and cosine.
The current documentation for PySINDy, especially higher order ODEs, lacks clear guidance for handling library functions involving trigonometric operations like sine and cosine(also lacking general documentation for trig equations like double pendulum). While the provided examples and documentation cover high-order ODEs, they do not address scenarios where ODEs involve trigonometric terms(eg pendulum on cart and double pendulum).
I am trying to replicate the results of the double pendulum problem outlined in the SINDy-PI paper "SINDy-PI: A Robust Algorithm for Parallel Implicit Sparse Identification of Nonlinear Dynamics", where the equation that was found by SINDY-PI was:
So it would be very helpful if you could provide library functions for this problem. Please check out the code I have so far and provide any feedback:
Additional info - when i include library functions such Polynomial tensored with Fourier, the model ends up outputting 100-200 equations, none of them giving me the desired output from the original SINDy-PI paper. If i don't include any library functions, most coefficients become nan(0).