Computation of Kronecker-like forms and applications in Julia

The Kronecker-canonical form of a linear pencil M - λN basically characterizes the right and left singular structure and the eigenvalue structure of the pencil. The computation of the Kronecker-canonical form may involve the use of ill-conditioned similarity transformations and, therefore, is potentially numerically unstable. Fortunately, alternative staircase forms, called Kronecker-like forms (KLFs), can be determined by employing exclusively orthogonal or unitary similarity transformations and allow to obtain basically the same (or only a part of) structural information on the pencil M - λN. Various KLFs can serve to address, in a numerically reliable way, the main applications of the Kronecker form, such as the computation of minimal left or right nullspace bases, the computation of eigenvalues and (Smith) zeros, the determination of the normal rank of polynomial and rational matrices, the computation of various factorizations of rational matrices, as well as the solution of linear equations with polynomial or rational matrices. The KLFs are also instrumental for solving computational problems in the analysis of generalized systems described by linear differential- or difference-algebraic equations (also known as descriptor systems).

A collection of functions has been implemented as a MatrixPencils.jl Julia package to compute a range of Kronecker-like forms (KLFs) which reveal the full or partial Kronecker structure of a linear pencil. The KLFs are computed by performing several pencil reduction operations on a reduced basic form of the initial pencil. These operations efficiently compress the rows or columns of certain submatrices to full rank matrices and simultaneously maintain the reduced basic form. The rank decisions involve the use of rank revealing QR-decompositions with colum pivoting or the, more reliable, SVD-decompositions. The overall computational complexity of all reduction algorithms is O(n^3), where n is the largest dimension of the pencil M - λN.

The available functions cover both real and complex numerical data. The current version of the package includes the following main functions for linear pencils:

Manipulation of general linear matrix pencils

klf                                 Computation of the Kronecker-like form exhibiting the full Kronecker structure.
klf_left                       Computation of the Kronecker-like form exhibiting the left Kronecker structure.
klf_left!                     Computation of the Kronecker-like form of a subpencil exhibiting the left Kronecker structure (overwrites input matrices)
klf_left_refine!     Separates the infinite and left Kronecker structures of a full column rank subpencil (overwrites input matrices)
klf_right                   Computation of the Kronecker-like form exhibiting the right Kronecker structure.
klf_right!                  Computation of the Kronecker-like form of a subpencil exhibiting the right Kronecker structure (overwrites input matrices)
klf_right_refine!  Separates the right and infinite Kronecker structures of a full row rank subpencil (overwrites input matrices)
klf_rlsplit                 Computation of the Kronecker-like form exhibiting the separation of right and left Kronecker structures.
preduceBF              Reduction of a pencil M - λN to the basic condensed form  [B A-λE; D C] with E upper triangular and nonsingular.

Manipulation of structured linear matrix pencils of the form [A-λE B; C D] 

sreduceBF      Reduction to the basic condensed form  [B A-λE; D C] with E upper triangular and nonsingular.
sklf                       Computation of the Kronecker-like form exhibiting the full Kronecker structure.
sklf_left             Computation of the Kronecker-like form exhibiting the left Kronecker structure.
sklf_right          Computation of the Kronecker-like form exhibiting the right Kronecker structure.                                                         
sklf_left!           Reduction of [A-λE; C-λG] , [A-λE; C]  or [A-λI; C] to a staircase form exhibiting the left Kronecker structure.
sklf_leftfin!     Reduction of [A-λE; C]  to a staircase form exhibiting the separation of its finite (unobservable) eigenvalues.
sklf_right!        Reduction of [B-λF A-λE], [B A-λE] or [B A-λI] to a staircase form exhibiting the right Kronecker structure.
sklf_rightfin!  Reduction of [B A-λE] to a staircase form exhibiting the separation of its finite (uncontrollable) eigenvalues.
gsklf             Computation of several row partition preserving special Kronecker-like forms.
 

Manipulation of regular linear matrix pencils

isregular            Checking the regularity of a pencil.
isunimodular  Checking the unimodularity of a pencil.
fisplit                    Finite-infinite eigenvalue splitting.
fisplit!                  Finite-infinite eigenvalue splitting (overwrites input matrices).
sfisplit                  Special finite-infinite eigenvalue splitting.
fihess                    Finite-infinite eigenvalue splitting in a generalized Hessenberg form
fischur                 Finite-infinite eigenvalue splitting in a generalized Schur form
fischursep         Finite-infinite eigenvalue splitting in an ordered generalized Schur form
sfischursep      Special finite-infinite eigenvalue splitting in an ordered generalized Schur form.
fiblkdiag             Finite-infinite eigenvalue splitting based block diagonalization
gsblkdiag           Finite-infinite and stable-unstable eigenvalue splitting based block diagonalization
saloc                     Spectrum alocation for the pairs (A,B) and (A-λE,B)
salocd                  Spectrum alocation for the dual pairs (A,C) and (A-λE,C)
salocinf               Infinite spectrum alocation for the pair (A-λE,B)
salocinfd            Infinite spectrum alocation for the dual pair (A-λE,C)
ordeigvals        Order-preserving computation of eigenvalues of a Schur matrix or a generalized Schur pair.
_qrE!                     Reduce the regular pencil A-λE to an equivalent form with E upper triangular.
_svdlikeAE!      Reduce the regular pencil A-λE to an equivalent rank-revealing SVD-like form with E upper triangular or diagonal.
 

Some applications of matrix pencil computations

pkstruct   Determination of the Kronecker structure information.
prank         Determination of the normal rank.
peigvals    Computation of the finite and infinite eigenvalues.
pzeros        Computation of the finite and infinite (Smith) zeros.
 

Some applications of structured linear matrix pencils of the form [A-λE B; C D]

spkstruct   Determination of the Kronecker structure information.
sprank         Determination of the normal rank.
speigvals   Computation of the finite and infinite eigenvalues.
spzeros       Computation of the finite and infinite (Smith) zeros.
 

Manipulation of linearizations of the form [A-λE B; C D] and [A-λE B-λF; C-λG D-λH]

lsminreal      Computation of minimal order linearizations [A-λE B; C D] of rational matrices.
lsminreal2   Computation of minimal order linearizations [A-λE B; C D] of rational matrices (potentially more efficient).
lpsminreal   Computation of minimal order pencil based linearizations [A-λE B-λF; C-λG D-λH] of rational matrices.
lsequal           Checking the equivalence of two linearizations.
lpsequal        Checking the equivalence of two pencil based linearizations.
lseval              Evaluation of the value of the rational matrix corresponding to a descriptor system based linearization.
lpseval           Evaluation of the value of the rational matrix corresponding to a pencil based linearization.
lps2ls              Conversion of a pencil based linearization into a descriptor system based linearization.
lsbalance!    Scaling of descriptor system based linearizations.
lsbalqual      Evaluation of the scaling quality of  descriptor system based linearizations. 

The implementations of above functions rely on a set of low level functions for manipulating subpencils:

Operations on general linear matrix pencils

_preduceBF!   Reduction of a subpencil M - λN to the basic condensed form  [B A-λE; D C] with E upper triangular and nonsingular.
_preduce1!     Row compression of [B; D] with preservation of the upper triangular form of E.
_preduce2!     Row compression of B with preservation of the upper triangular form of E.
_preduce3!     Column compression of [D C] with preservation of the upper triangular form of E.
_preduce4!     Column compression of C with preservation of the upper triangular form of E.

Operations on structured linear matrix pencils

_sreduceB!           Row compression of B by applying an orthogonal transformation from left to the matrices B, A and E.
_sreduceBA!       Row compression of B by applying an orthogonal similarity transformation to the triple (A, B, C).
_sreduceBAE!    Row compression of B by applying an orthogonal similarity transformation to the triple (A-λE, B, C).
_sreduceC!          Column compression of C by applying an orthogonal transformations from right to the matrices C, A and E.
_sreduceAC!       Column compression of C by applying an orthogonal simlarity transformation to the triple (A, B, C).
_sreduceAEC!   Column compression of C by applying an orthogonal simlarity transformation to the triple (A-λE, B, C).

Important applications of linear pencils is the manipulation of polynomial and rational matrices using suitable linearizations. The current version of the package includes the following functions for polynomial and rational matrices: 

Manipulation of polynomial matrices

poly2pm       Conversion of a polynomial matrix from the Polynomials package format to a 3D matrix.
pm2poly       Conversion of a polynomial matrix from a 3D matrix to the Polynomials package format.
pmdeg            Determination of the degree of a polynomial matrix.
pmeval           Evaluation of a polynomial matrix for a given value of its argument.
pmreverse   Building the reversal of a polynomial matrix.
pmdivrem   Quotients and remainders of elementwise divisions of two polynomial matrices.
pm2lpCF1   Building a linearization in the first companion Frobenius form.
pm2lpCF2   Building a linearization in the second companion Frobenius form.
pm2ls             Building a structured linearization of a polynomial matrix.
ls2pm            Computation of the polynomial matrix from its structured linearization.
pm2lps         Building a linear pencil based structured linearization of a polynomial matrix.
lps2pm        Computation of the polynomial matrix from its linear pencil based structured linearization.
spm2ls         Building a structured linearization [A-λE B; C D] of a structured polynomial matrix [T(λ) U(λ); V(λ) W(λ)].
spm2lps      Building a linear pencil based structured linearization [A-λE B-λF; C-λG D-λH] of a structured polynomial matrix [T(λ) U(λ); V(λ) W(λ)].

Some applications to polynomial matrices

pmkstruct               Determination of the Kronecker structure and infinite pole-zero structure.
pmeigvals                Computation of the finite and infinite eigenvalues.
pmzeros                    Computation of the finite and infinite zeros.
pmzeros1                 Computation of the finite and infinite zeros using linear pencil based structured linearization.
pmzeros2                 Computation of the finite and infinite zeros using structured pencil based linearization.
pmroots                     Computation of the roots of the determinant of a regular polynomial matrix.
pmpoles                     Computation of the infinite poles.
pmpoles1                  Computation of the infinite poles using linear pencil based structured linearization.
pmpoles2                  Computation of the infinite poles using structured pencil based linearization.
pmrank                       Determination of the normal rank.
ispmregular             Checking the regularity of a polynomial matrix.
ispmunimodular   Checking the unimodularity of a polynomial matrix.

Manipulation of rational matrices

rm2lspm     Representation of a rational matrix as a linearization of its strictly proper part plus its polynomial part.
rmeval         Evaluation of a rational matrix for a given value of its argument.
rm2ls            Building a descriptor system based structured linearization of a rational matrix.
ls2rm            Computation of the rational matrix from its descriptor system based structured linearization.
rm2lps          Building a pencil based structured linearization of a rational matrix.
lps2rm          Computation of the rational matrix from its pencil based structured linearization.
lpmfd2ls      Building a descriptor system based structured linearization of a left polynomial matrix fractional description.
rpmfd2ls      Building a descriptor system based structured linearization of a right polynomial matrix fractional description.
lpmfd2lps    Building a pencil based structured linearization of a left polynomial matrix fractional description.
rpmfd2lps   Building a pencil based structured linearization of a right polynomial matrix fractional description.
pminv2ls      Building a descriptor system based structured linearization of the inverse of a polynomial matrix.
pminv2lps    Building a pencil based structured linearization of the inverse of a polynomial matrix.

Some applications to rational matrices

rmkstruct   Determination of the Kronecker structure and infinite pole-zero structure.
rmzeros       Computation of the finite and infinite zeros using structured pencil based linearization.
rmzeros1    Computation of the finite and infinite zeros using linear pencil based structured linearization.
rmpoles       Computation of the infinite poles using structured pencil based linearization.
rmpoles1    Computation of the infinite poles using linear pencil based structured linearization.
rmrank         Determination of the normal rank.

The implementations of the functions for the manipulation of polynomial and rational matrices rely on a set of low level functions for manipulating polynomials:

Manipulation of polynomials

poldeg             Degree of a polynomial.
poldeg1          Degree of a polynomial plus one.
conv                  Convolution of two vectors (or product of two polynomials).
convmtx         Building the convolution matrix for a given vector.
poldivrem      Quotient and remainder of the division of two polynomials.
poldiv                Quotient of the exact division of two polynomials.
polgcdvw        Greatest common divisor of two polynomials.
gcdvwupd      Iterative refinement of the accuracy of the greatest common divisor of two polynomials.
pollcm              Least common multiple of two polynomials.
polcoeffval   Coefficients of a polynomial from its roots and the value of the polynomial in a point.
qrsolve!          Fast least-squares solver for full column rank Hessenberg-like matrices.