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 for care() / lqr()

  • sb02mt() – Construct the Riccati equation data from Q, R, S weight matrices

  • sg02ad() – Generalized ARE (continuous or discrete) — use for dare() / 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 function

  • ab13bd() – H2 norm (L2 norm)

  • ab13md() – Structured singular value (mu) — used for disk margin analysis

  • ab13ed() – Frequency response peak

  • ab13fd() – L-infinity norm of a transfer matrix

  • ab13hd() – 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 approximation

  • ab09nd() – Balanced reduction with frequency weighting — used by balred() with matchdc

Unstable systems (additive decomposition):

  • ab09dd() – BT with coprime factorization

  • ab09ed() – Hankel-norm via coprime factorization

Frequency-weighted reduction:

  • ab09fd() – Frequency-weighted BT

  • ab09gd() – Frequency-weighted BT (stability-preserving)

  • ab09hd() – Frequency-weighted Hankel-norm

  • ab09id() – 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 by h2syn()

  • 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 equations

  • sb03od() – Cholesky-factored Gramians via Lyapunov equations

  • sg03ad() – Gramians for descriptor systems (generalized Lyapunov)

Structural decompositions:

  • ab01md() – Controllability staircase form (upper)

  • ab01nd() – Controllability staircase form (lower)

  • ab01od() – Controllable/uncontrollable decomposition

  • ab08nd() – Transmission zeros and normal rank

  • ab08md() – Right Kronecker indices and transmission zeros

  • ag08bd() – 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 sequence

  • tf01nd() – 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-space

  • tc04ad() – Left MFD to right MFD conversion

System Interconnections

Connect state-space systems in series, parallel, and feedback configurations.

  • ab05md() – Series (cascade) connection G2 * G1

  • ab05nd() – Feedback connection

  • ab05od() – Parallel connection G1 + G2

  • ab05pd() – Series connection (with scaling)

  • ab05qd() – Append (block diagonal) two systems

  • ab05rd() – Feedback connection (with scaling)

  • ab05sd() – Series-parallel connection

State-Space Transformations

Transform, balance, and convert system representations.

  • tb01pd() – Minimal realization (controllable + observable) — used by minreal()

  • tb01wd() – State-space balancing

  • tb01td() – Upper block-triangular form (similarity)

  • mb03rd() – Real Schur form / modal decomposition — used by modal_form()

  • ab07md() – Inverse of a state-space system

  • ab07nd() – 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 systems

  • sg03bd() – Generalized Lyapunov equation (Cholesky factor)

Sylvester Equations

Solve Sylvester and generalized Sylvester matrix equations.

  • sb04md() – Continuous Sylvester equation AX + XB = C

  • sb04nd() – Discrete Sylvester equation AXB + X = C

  • sb04qd() – 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 order

  • ib01bd() – Subspace identification: estimate A, B, C, D

  • ib01cd() – Subspace identification: estimate covariance matrices

  • ib03ad() – 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 filter

  • fb01vd() – Kalman filter (conventional form)

Matrix Exponential

Compute matrix exponentials and related quantities.

  • mb05md() – Matrix exponential via Pade approximation

  • mb05nd() – Matrix exponential and integral

  • mb05od() – Matrix exponential of a Hamiltonian matrix

Polynomial Operations

Operations on real and complex polynomials.

  • mc01md() – Evaluate polynomial at a point

  • mc01pd() – Greatest common divisor of two polynomials

  • mc01qd() – Roots to polynomial coefficients

  • mc01rd() – 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 form

  • tg01hd() – Reduce descriptor system to Hessenberg-triangular form

  • tg01jd() – Reduce descriptor system to block diagonal form

  • ag07bd() – Inverse of a descriptor system

  • ag08bd() – Transmission zeros of a descriptor system

Benchmark Systems

Generate standard benchmark state-space models for testing.

  • bb01ad() – Continuous-time benchmark examples

  • bb02ad() – More continuous-time benchmark examples

  • bb03ad() – Discrete-time benchmark examples

  • bb04ad() – Parametric benchmark examples