Slycot is a Python wrapper for selected routines from SLICOT, the Subroutine Library in Systems and Control Theory, and is primarily a dependency for the python-control package.
Wrapped routines include those that:
- solve for Ricatti, Lyapunov, and Sylvester equations
- find multivariable zeros of systems
- find reduced-order realizations of MIMO state-space systems
- find H2 and L2 norms of MIMO systems
- synthesize eigenvalue-placement controllers
- synthesize H-infinity and H2 controllers
- convert MIMO state-space representations to transfer functions, and vice versa
If you find a bug or have a question, please open an issue at issues.
We recommend using pre-compiled wheels from PyPI, or packages from conda-forge.
If a binary package isn't available for your system, you can compile from source, but you will need some software-building expertise.
If you are new to installing packages, read the tutorial.
Use pip to install:
pip install --only-binary :all: slycot
If this doesn't work there isn't a binary wheel for your platform.
To install with test dependencies, run:
pip install --only-binary :all: slycot[test]
And you can then run the tests with pytest --pyargs slycot
If you haven't used conda before, read the conda-forge getting started guide.
First install Miniforge or another conda package manager. To install Slycot in a new environment project-1 run:
conda create -n project-1 slycot
See Building Slycot.
Slycot supports Python versions 3.10 or later, and Numpy 2.0 or later.
To run the Slycot unit tests and examples, you'll also need SciPy and pytest.
Up until version 0.4, Slycot used a version of SLICOT that was released under the GPLv2 license. This requires Slycot to be released under the same license. In December 2020, SLICOT 5.7 was released under BSD-3-Clause. However, as the existing Slycot wrappers have been submitted by many contributors, we cannot move away from GPLv2 unless we get the permission to do so by all authors. Thus, Slycot remains licensed under GPLv2 until further notice.