I’m pleased to announce the release of v1.0 of the package DescriptorSystems.jl for manipulation of descriptor systems.
Descriptor systems are the most general models employed to describe linear time-invariant systems using first order linear differential-algebraic equations (DAEs) of the form
Edx(t)/dt = Ax(t) + Bu(t) ,
y(t) = Cx(t) + Du(t) ,
where x(t)
, u(t)
and y(t)
are the system state vector, input vector and output vector, respectively, the matrices A
, E
, B
, C
and D
can have real or complex elements, with A
and E
square and E
possibly singular, and t
is the continuous time variable. Discrete descriptor systems, described by difference-algebraic equations, can be modelled in a similar way using x(t+1)
instead of dx(t)/dt
and t
being the discrete time variable. Standard linear time-invariant systems correspond to E = I
.
Continuous-time descriptor models frequently arise in the modeling of interconnected systems involving linear DAEs and are also common in modeling constrained mechanical systems (e.g., contact problems) or electrical circuits. Discrete-time descriptor representations are commonly used to model economic processes. Also, several system representations can be converted to descriptor system models, as for example, input-output system descriptions based on rational and polynomial matrices, second and higher order linear DAEs, or discrete linear time-periodic system models.
The DescriptorSystems.jl collection allows the numerically reliable operation on and manipulation of rational and polynomial matrices via their matrix pencil based linearizations as descriptor system realizations. The implementation of the DescriptorSystems.jl package is based on the tools for matrix pencil manipulations provided in the MatrixPencils.jl package, solvers for Lyapunov, Sylvester and Riccati matrix equations available in the MatrixEquations.jl package, and polynomial and rational function manipulation tools provided by the Polynomials.jl package.
The functionality of DescriptorSystems.jl and MatrixEquations.jl packages covers and extends in many aspects the functionality of the computational tools available in the Control System Toolbox of MATLAB and is similar to that of the DSTOOLS collection of tools for MATLAB, based on Fortran implementations available in the Systems and Control Library SLICOT. A short account on the role of the descriptor system representation as basis for reliable numerical computations for computer aided control system analysis and design can be found in the Encyclopedia of Systems and Control (2019) article (see here for an extended and updated version).
Acknowledgements
I would like to thank John Verzani for the helpful work in implementing the rational function object within the Polynomials.jl package.