Major changes
This release introduces the `ConstrainedSR3` optimizer. This is an enhanced version of the `SR3` optimizer which allows one to specify *linear equality constraints* on the learned coefficients.
For example, if you know that the equations you are trying to learn look like
text
x' = a + by
y' = c - bx
(i.e. that the coefficient on y should be the negative of the coefficient on x), you could enforce that constraint using `ConstrainedSR3`.
Additionally, `ConstrainedSR3` allows you to specify a different threshold parameter for each library function coefficient. This is an improvement on our other optimizers which all take a fixed regularization constant that is applied uniformly to all coefficients. You can use this feature to choose a higher threshold for, say, quadratic interaction terms like `x*x` or `x*y` than you do for linear terms, for example.
We also have added a [notebook](https://github.com/dynamicslab/pysindy/blob/master/examples/7_plasma_example.ipynb) demonstrating these new features on a real world plasma dataset.
Other Updates
* Fix bug with extrapolating control inputs outside of original time domain with `SINDy.simulate`
* It is now possible to specify an initial guess for coefficients with the `STLSQ` and `SR3` optimizers
* Added some fancy plots to the differentiation notebook
* Minor bug fixes