DescriptorSystems.jl
A descriptor system is a generalized state-space representation of the form
Eλx(t) = Ax(t) + Bu(t),
y(t) = Cx(t) + Du(t),where x(t) is the state vector, u(t) is the input vector, and y(t) is the output vector, and where λ is either the differential operator λx(t) = dx(t)/dt for a continuous-time system or the advance operator λx(t) = x(t + ΔT) for a discrete-time system with the sampling time ΔT. In all what follows, we assume E is square and possibly singular, and the pencil A − λE is regular (i.e., det(A − λE) ̸≡ 0). If E = I, we call the above representation a standard state-space system.
The corresponding input-output representation is
Y(λ) = G(λ)U(λ),where, depending on the system type, λ = s, the complex variable in the Laplace transform for a continuous-time system, or λ = z, the complex variable in the Z-transform for a discrete-time system, Y(λ) and U(λ) are the Laplace- or Z-transformed output and input vectors, respectively, and G(λ) is the rational transfer function matrix (TFM) of the system, defined as
-1
G(λ) = C(λE − A) B + D.It is well known that the descriptor system representation is the most general description for a linear time-invariant system. Continuous-time descriptor systems arise frequently from modelling interconnected systems containing algebraic loops or constrained mechanical systems which describe contact phenomena. Discrete-time descriptor representations are frequently used to model economic processes. A main apeal of descriptor system models is that the manipulation of rational and polynomial matrices can be easily performed via their descriptor system representations, since each rational or polynomial matrix can be interpreted as the TFM of a descriptor system. For an introductory presentation of the main concepts, see [1].
The theoretical background for the analysis of descriptor systems closely relies on investigating the properties of certain linear matrix pencils, as the regular pole pencil P(λ) = A-λE, or the generally singular system matrix pencil S(λ) = [A-λE B; C D]. Therefore, the main analysis tools of descriptor systems are pencil manipulation techniques (e.g., reductions to various Kronecker-like forms), as available in the MatrixPencils package [2]. Among the main applications of pencil manipulation algorithms, we mention the computation of minimal nullspace bases, the computation of poles and zeros, the determination of the normal rank of polynomial and rational matrices, computation of various factorizations of rational matrices, as well as the solution of linear equations with polynomial or rational matrices. Important additional computational ingredients in these applications are tools for solving matrix equations, as various Lyapunov, Sylvester and Riccati equations. These tools are provided by the MatrixEquations package [3].
The available functions in the DescriptorSystems.jl package cover both standard and descriptor systems with real or complex coefficient matrices. Several functions have been extended to handle large order descriptor systems with sparse and structured matrix data. The current version of the package includes the following functions:
Building descriptor system state-space models
dssConstruction of descriptor state-space models.dssdataExtraction of matrix-data from a descriptor state-space model.
Building rational transfer functions
RationalTransferFunctionConstruction of rational transfer function objects.rtfBuilding rational transfer functions.
Interconnecting descriptor system models
appendBuilding aggregate models by appending the inputs and outputs.parallelConnecting models in parallel (also overloaded with+).seriesConnecting models in series (also overloaded with*).horzcatHorizontal concatenation of descriptor system models (also overloaded with[ * * ]).vertcatVertical concatenation of descriptor system models (also overloaded with[ *; * ]).
Basic operations on descriptor system models
invInversion of a system.ldivLeft division for two systems (also overloaded with\).rdivRight division for two systems (also overloaded with/).gdualBuilding the dual of a descriptor system (also overloaded withtranspose)ctransposeBuilding the conjugate transpose of a system (also overloaded withadjointand').adjointBuilding the adjoint of a system.
Basic conversions on descriptor system models
gprescaleBalancing of a descriptor system.c2dDiscretization of continuous-time descriptor systems.dss2rmRational transfer function matrix of a descriptor system.dss2pmPolynomial transfer function matrix of a descriptor system.gbilinGeneralized bilinear transformation of a descriptor system.
Some operations on rational transfer functions and matrices
simplifyPole-zero cancellation.normalizeNormalization of a rational transfer function to monic denominator.confmapApplying a conformal mapping transformation to a rational transfer function or rational transfer function matrix.zpkComputation of zeros, poles and gain of a rational transfer function.rtfbilinGeneration of common bilinear transformations and their inverses.
Simplification of descriptor system models
gminrealMinimal realization of descriptor systems.girIrreducible realization of descriptor systems.gbalmrReduced-order approximations of descriptor systems using balancing related methods.gss2ssConversion to SVD-like forms without non-dynamic modes.dss2ssConversion of descriptor systems to standard form.
Descriptor system analysis
isregularTest whether a descriptor system has a regular pole pencil.gpolePoles of a descriptor system.gpoleinfoPoles and pole structure information of a descriptor system.isproperTest whether a descriptor system is proper.isstableTest whether a descriptor system is stable.gzeroZeros of a descriptor system.gzeroinfoZeros and zero structure information of a descriptor system.gnrankNormal rank of the transfer function matrix of a descriptor system.ghanormHankel norm of a proper and stable descriptor system.gl2normL2norm of a descriptor system.gh2normH2norm of a descriptor system.glinfnormL∞norm of a descriptor system.ghinfnormH∞norm of a descriptor system.gnugapν-gap distance between two descriptor systems.freqrespFrequency response of a descriptor system.timerespTime response of a descriptor system.steprespStep response of a descriptor system.gbalqualEvaluation of the scaling quality of the matrices of a descriptor system.
Factorization of descriptor systems
grcfRight coprime factorization with proper and stable factors.glcfLeft coprime factorization with proper and stable factors.grcfidRight coprime factorization with inner denominator.glcfidLeft coprime factorization with inner denominator.gnrcfNormalized right coprime factorization.gnlcfNormalized left coprime factorization.giofacInner-outer/QR-like factorization.goifacCo-outer-co-inner/RQ-like factorization.grsfgRight spectral factorization ofγ^2*I-G'*G.glsfgLeft spectral factorization ofγ^2*I-G*G'.
Advanced operations on transfer function matrices
gsdecAdditive spectral decompositions.grnullRight nullspace basis of a transfer function matrix.glnullLeft nullspace basis of a transfer function matrix.grangeRange space basis of a transfer function matrix.gcrangeCoimage space basis of a transfer function matrix.grsolSolution of the linear rational matrix equationG(λ)*X(λ) = F(λ).glsolSolution of the linear rational matrix equationX(λ)*G(λ) = F(λ).grmcover1Right minimum dynamic cover of Type 1 based order reduction.glmcover1Left minimum dynamic cover of Type 1 based order reduction.grmcover2Right minimum dynamic cover of Type 2 based order reduction.glmcover2Left minimum dynamic cover of Type 2 based order reduction.ginvGeneralized inverses.
Solution of model-matching problems
gnehariGeneralized Nehari approximation.glinfldpSolution of the least distance problem.grasolApproximate solution of the linear rational matrix equationG(λ)*X(λ) = F(λ).glasolApproximate solution of the linear rational matrix equationX(λ)*G(λ) = F(λ).
Release Notes
Main developer
License: MIT (expat)
References
[1] A. Varga, Solving Fault Diagnosis Problems – Linear Synthesis Techniques, Vol. 84 of Studies in Systems, Decision and Control, Springer International Publishing, 2017.
[2] A. Varga, MatrixPencils.jl: Matrix pencil manipulation using Julia. Zenodo: https://doi.org/10.5281/zenodo.3894503.
[3] A. Varga, MatrixEquations.jl: Solution of Lyapunov, Sylvester and Riccati matrix equations using Julia. Zenodo: https://doi.org/10.5281/zenodo.3556867.