SLICOT - Subroutine Library in Control Theory
A C11 translation of the SLICOT library with Python bindings.
Contents:
- Installation
- Quick Start
- Task-Oriented Guide
- LQR and LQG Design
- Pole Placement
- System Norms
- Model Reduction
- H-infinity and H2 Control
- Controllability, Observability, and Gramians
- Frequency and Time Response
- Transfer Function Conversion
- System Interconnections
- State-Space Transformations
- Continuous-Discrete Conversion
- Riccati Equations
- Lyapunov and Stein Equations
- Sylvester Equations
- Spectral Factorization
- System Identification
- Kalman Filtering
- Matrix Exponential
- Polynomial Operations
- Descriptor System Operations
- Benchmark Systems
- API Reference
- AB - Analysis - Controllability, Observability, Minimal Realization
- AG - Analysis - Generalized/Descriptor Systems
- BB - Benchmark - Continuous-time Systems
- BD - Benchmark - Data Generation
- DE - Data Analysis - Exponential
- DF - Data Analysis - FFT
- DG - Data Analysis - General
- DK - Data Analysis - Kalman
- DL - Data Analysis - Linear
- FB - Factorization - Block
- FD - Factorization - Descriptor
- IB - Identification - Block
- MA - Matrix Operations - General
- MB - Matrix Operations - Block/Band
- MC - Matrix Operations - Complex
- MD - Matrix Operations - Descriptor
- NF - Numerical Functions
- SB - Synthesis - Basic
- SG - Synthesis - Generalized/Descriptor
- TB - Transformation - Basic
- TC - Transformation - Complex
- TD - Transformation - Descriptor
- TF - Transfer Function
- TG - Transformation - Generalized
- UD - Utility - Descriptor
- UE - Utility - Elementary
- ZG - Zeros - Generalized
- Complete Function List
Installation
pip install ctrlsys
Pre-built wheels are available for Linux, macOS, and Windows (Python 3.11-3.13). OpenBLAS is bundled - no external BLAS/LAPACK installation required.
Quick Example
import numpy as np
from ctrlsys import ab01md
A = np.array([[1, 2], [3, 4]], dtype=float, order='F')
b = np.array([1, 0], dtype=float, order='F')
result = ab01md('I', A, b, 0.0)
print('Controllable states:', result[2])