In this release the following changes are included:
- Implementation of the method `rvs` of the classes within `skrmt.ensemble.spectral_law` to sample **independent eigenvalues of the spectral distributions without using any random matrix**. This is achieved in several ways depending on our knowledge about each particular distribution:
- `rvs` of `WignerSemicircleLaw` is implemented using the fact that Wigner's Semicircle law [coincides with a scaled beta distribution](https://en.wikipedia.org/wiki/Wigner_semicircle_distribution).
- `rvs` of `MarchenkoPasturDistribution`is implemented using the algorithm [Inverve Transform Sampling](https://en.wikipedia.org/wiki/Inverse_transform_sampling) to draw independent samples given a PDF.
- `rvs` of `TracyWidomDistribution` is implemented using [scipy's rv_continous class](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_continuous.html), that automatically implements `rvs` if you provide the expression of the `pdf` or of the `cdf`.
- `rvs` of `ManovaSpectrumDistribution` is implemented using the algorithm [Inverve Transform Sampling](https://en.wikipedia.org/wiki/Inverse_transform_sampling) to draw independent samples given a PDF.
- Ensemble methods **do not normalize eigenvalues by default**. To normalize them, the argument `normalize=True` has to be set.
- Ensemble spectrum histograms **are not normalized to represent the PDF by default**, so each bin is representing the absolute count of the sampled eigenvalues. To show the actual eigenvalue frequency (density), set the input argument `density=True`.
- All plotting methods and functions now **computes correctly and automatically** the **representation interval** depending on the **ensemble/law parameters**.
- Added input arg `random_state` of type `int` to all methods and functions that require random-number generation. This is useful to **reproduce any experiment**.
- The input argument `fig_path` is now named `savefig_path` in all methods and functions to match `matplotlib` nomenclature.
- New sub-module within `skrmt.ensemble` named `utils` containing **useful functions**:
- `plot_max_eigvals_tracy_widom`: plots the histogram of the **maximum eigenvalues** of a random ensemble with the
Tracy-Widom PDF.
- `rand_mtx_max_eigvals`: computes **several times the maximum eigenvalue** of different random matrix samples.
- Complex plots of `CircularEnsemble` are now **squared to highlight the actual axis proportions**.
- Renamed `_base_ensemble` to `base_ensemble`.
- Moved **general-purpose functions** to a separate file called `misc.py`.