Task-Oriented Guide
This guide maps common control engineering tasks to the appropriate SLICOT routines.
All functions are available directly from the slicot module:
from ctrlsys import sb02md, ab09ad
The guide is organized in two tiers. Common workflows covers the tasks that most control engineers encounter — LQR design, model reduction, system norms — matching the routines used by libraries like python-control. Equation solvers and specialized provides direct access to the underlying numerical routines for advanced users.
Common Workflows
LQR and LQG Design
The most common control design task: solve an algebraic Riccati equation, then compute
a state-feedback gain. Continuous LQR uses sb02md() (CARE), discrete LQR
uses sg02ad() (DARE). For LQG, also compute Gramians via sb03md().
sb02md()– Continuous-time ARE (standard) — use forcare()/lqr()sb02mt()– Construct the Riccati equation data from Q, R, S weight matricessg02ad()– Generalized ARE (continuous or discrete) — use fordare()/dlqr()sb02od()– Continuous-time ARE (generalized, with weighting)sb02rd()– Continuous-time ARE (Schur method, condition estimate)
Pole Placement
Place closed-loop eigenvalues at desired locations via state feedback.
sb01bd()– Pole assignment via state feedback (Varga algorithm — robust, handles repeated poles)sb01md()– Pole assignment for multi-input systems (Ackermann method)
System Norms
Compute norms of transfer functions for performance and robustness analysis.
ab13dd()– H-infinity / L-infinity norm of a transfer functionab13bd()– H2 norm (L2 norm)ab13md()– Structured singular value (mu) — used for disk margin analysisab13ed()– Frequency response peakab13fd()– L-infinity norm of a transfer matrixab13hd()– Hankel norm
Model Reduction
Reduce model order while preserving key input-output behavior.
Stable systems:
ab09ad()– Balanced truncation (BT)ab09bd()– Square-root balanced truncation (SRBT)ab09cd()– Balanced stochastic truncation (BST)ab09md()– Hankel-norm approximationab09nd()– Balanced reduction with frequency weighting — used bybalred()withmatchdc
Unstable systems (additive decomposition):
ab09dd()– BT with coprime factorizationab09ed()– Hankel-norm via coprime factorization
Frequency-weighted reduction:
ab09fd()– Frequency-weighted BTab09gd()– Frequency-weighted BT (stability-preserving)ab09hd()– Frequency-weighted Hankel-normab09id()– Frequency-weighted BT (general weighting)ab09jd()– Frequency-weighted BT (general, stability-preserving)ab09kd()– Frequency-weighted Hankel-norm (general weighting)
H-infinity and H2 Control
Design controllers for robust performance under uncertainty.
sb10ad()– H-infinity controller (continuous, general)sb10dd()– H-infinity controller (discrete)sb10hd()– H2 optimal controller (discrete) — used byh2syn()sb10fd()– H-infinity controller (continuous, simplified)sb10ed()– H-infinity controller (loopshaping)sb10id()– H-infinity controller (LMI-based, continuous)sb10jd()– H-infinity controller (LMI-based, discrete)sb10ld()– H-infinity controller (coprime factorization)
Controllability, Observability, and Gramians
Structural properties of state-space systems and controllability/observability Gramians.
Gramians:
sb03md()– Controllability/observability Gramians via Lyapunov equationssb03od()– Cholesky-factored Gramians via Lyapunov equationssg03ad()– Gramians for descriptor systems (generalized Lyapunov)
Structural decompositions:
ab01md()– Controllability staircase form (upper)ab01nd()– Controllability staircase form (lower)ab01od()– Controllable/uncontrollable decompositionab08nd()– Transmission zeros and normal rankab08md()– Right Kronecker indices and transmission zerosag08bd()– Transmission zeros for descriptor systems
Frequency and Time Response
Evaluate system responses in frequency and time domains.
Frequency response:
tb05ad()– Frequency response at given complex frequency points
Time response:
tf01md()– Output response of a state-space system to a given input sequencetf01nd()– Output response via Hessenberg form
Transfer Function Conversion
Convert between state-space and transfer function representations.
tb04ad()– State-space to transfer function (SISO/MIMO)tb03ad()– Transfer function to state-space (polynomial form)td04ad()– Transfer function to descriptor state-spacetc04ad()– Left MFD to right MFD conversion
System Interconnections
Connect state-space systems in series, parallel, and feedback configurations.
ab05md()– Series (cascade) connection G2 * G1ab05nd()– Feedback connectionab05od()– Parallel connection G1 + G2ab05pd()– Series connection (with scaling)ab05qd()– Append (block diagonal) two systemsab05rd()– Feedback connection (with scaling)ab05sd()– Series-parallel connection
State-Space Transformations
Transform, balance, and convert system representations.
tb01pd()– Minimal realization (controllable + observable) — used byminreal()tb01wd()– State-space balancingtb01td()– Upper block-triangular form (similarity)mb03rd()– Real Schur form / modal decomposition — used bymodal_form()ab07md()– Inverse of a state-space systemab07nd()– Dual (transpose) of a state-space system
Continuous-Discrete Conversion
Convert between continuous-time and discrete-time representations.
ab04md()– Bilinear transformation (c2d / d2c)
Equation Solvers and Specialized
Riccati Equations
Solve algebraic Riccati equations (ARE) arising in LQR/LQG and H-infinity control. See also LQR and LQG Design above for the typical workflow.
sb02md()– Continuous-time ARE (standard)sb02od()– Continuous-time ARE (generalized, with weighting)sb02rd()– Continuous-time ARE (Schur method, condition estimate)sg02ad()– Generalized ARE for descriptor systems (continuous or discrete)
Lyapunov and Stein Equations
Solve Lyapunov (continuous) and Stein/discrete-Lyapunov equations for stability analysis, Gramians, and covariance computation. See also Controllability, Observability, and Gramians above for Gramian workflows.
sb03md()– Continuous or discrete Lyapunov equation (standard)sb03od()– Continuous or discrete Lyapunov equation (Cholesky factor)sg03ad()– Generalized Lyapunov equation for descriptor systemssg03bd()– Generalized Lyapunov equation (Cholesky factor)
Sylvester Equations
Solve Sylvester and generalized Sylvester matrix equations.
sb04md()– Continuous Sylvester equation AX + XB = Csb04nd()– Discrete Sylvester equation AXB + X = Csb04qd()– Continuous Sylvester equation (Hessenberg-Schur method)sb04rd()– Discrete Sylvester equation (Hessenberg-Schur method)
Spectral Factorization
Compute spectral factors for optimal and robust control.
sb08cd()– Left spectral factorization (continuous)sb08dd()– Right spectral factorization (continuous)sb08ed()– Left spectral factorization (discrete)sb08fd()– Right spectral factorization (discrete)sb08gd()– Left coprime factorization (continuous)sb08hd()– Right coprime factorization (continuous)
System Identification
Estimate state-space models from measured input/output data.
ib01ad()– Subspace identification: compute system orderib01bd()– Subspace identification: estimate A, B, C, Dib01cd()– Subspace identification: estimate covariance matricesib03ad()– Wiener system identification (nonlinear)
Kalman Filtering
Sequential (square-root) filtering and smoothing.
fb01qd()– Square-root Kalman filter (one step)fb01rd()– Square-root Kalman filter (information form)fb01sd()– Square-root covariance filterfb01vd()– Kalman filter (conventional form)
Matrix Exponential
Compute matrix exponentials and related quantities.
mb05md()– Matrix exponential via Pade approximationmb05nd()– Matrix exponential and integralmb05od()– Matrix exponential of a Hamiltonian matrix
Polynomial Operations
Operations on real and complex polynomials.
mc01md()– Evaluate polynomial at a pointmc01pd()– Greatest common divisor of two polynomialsmc01qd()– Roots to polynomial coefficientsmc01rd()– Polynomial coefficients to roots (companion)
Descriptor System Operations
Operations specific to descriptor (generalized) state-space systems E*dx/dt = A*x + B*u.
tg01fd()– Reduce descriptor system to SVD-like formtg01hd()– Reduce descriptor system to Hessenberg-triangular formtg01jd()– Reduce descriptor system to block diagonal formag07bd()– Inverse of a descriptor systemag08bd()– Transmission zeros of a descriptor system
Benchmark Systems
Generate standard benchmark state-space models for testing.
bb01ad()– Continuous-time benchmark examplesbb02ad()– More continuous-time benchmark examplesbb03ad()– Discrete-time benchmark examplesbb04ad()– Parametric benchmark examples