Manipulation of rational matrices

FunctionDescription
rm2lspmRepresentation of a rational matrix as a linearization of its strictly proper part plus its polynomial part
rmevalEvaluation of a rational matrix for a given value of its argument.
rm2lsBuilding a descriptor system based structured linearization [A-λE B; C D] of a rational matrix
ls2rmComputation of the rational matrix from its descriptor system based structured linearization
rm2lpsBuilding a pencil based structured linearization [A-λE B-λF; C-λG D-λH] of a rational matrix
lps2rmComputation of the rational matrix from its pencil based structured linearization
lpmfd2lsBuilding a descriptor system based structured linearization [A-λE B; C D] of a left polynomial matrix fractional description
rpmfd2lsBuilding a descriptor system based structured linearization [A-λE B; C D] of a right polynomial matrix fractional description
lpmfd2lpsBuilding a pencil based structured linearization [A-λE B-λF; C-λG D-λH] of a left polynomial matrix fractional description
rpmfd2lpsBuilding a pencil based structured linearization [A-λE B-λF; C-λG D-λH] of a right polynomial matrix fractional description
pminv2lsBuilding a descriptor system based structured linearization [A-λE B; C D] of the inverse of a polynomial matrix
pminv2lpsBuilding a pencil based structured linearization [A-λE B-λF; C-λG D-λH] of the inverse of a polynomial matrix
MatrixPencils.rm2lspmFunction
rm2lspm(NUM, DEN; contr = false, obs = false, atol = 0, rtol) -> (A, B, C, D, blkdims)

Construct a representation of the rational matrix R(λ) := NUM(λ)./DEN(λ) as the sum of its strictly proper part, realized as a structured linearization

          | A-λI | B | 
          |------|---|
          |  C   | 0 |

and its polynomial part D(λ). The resulting representation satisfies

 R(λ) = C*inv(λI-A)*B + D(λ).

The linearization (A-λI,B,C,0) of the strictly proper part is in general non-minimal. A controllable realization is constructed if contr = true, while an observable realization results if obs = true. The matrix A results block diagonal and the vector blkdims contains the sizes of the diagonal blocks of A, such that the size of the i-th diagonal block is provided in blkdims[i]. See [1] for details.

NUM(λ) is a polynomial matrix of the form NUM(λ) = N_1 + λ N_2 + ... + λ**k N_(k+1), for which the coefficient matrices N_i, i = 1, ..., k+1 are stored in the 3-dimensional matrix NUM, where NUM[:,:,i] contains the i-th coefficient matrix N_i (multiplying λ**(i-1)).

DEN(λ) is a polynomial matrix of the form DEN(λ) = D_1 + λ D_2 + ... + λ**l D_(l+1), for which the coefficient matrices D_i, i = 1, ..., l+1, are stored in the 3-dimensional matrix DEN, where DEN[:,:,i] contain the i-th coefficient matrix D_i (multiplying λ**(i-1)).

Alternatively, NUM(λ) and DEN(λ) can be specified as matrices of elements of the Polynomial type provided by the Polynomials package. In this case, no check is performed that N(λ) and D(λ) have the same indeterminates.

The polynomial part D(λ) is contained in D, which is a 2-dimensional array if D(λ) has degree 0 or a 3-dimensional array if D(λ) has degree greater than 0. In the latter case D[:,:,i] contains the i-th coefficient matrix multiplying λ**(i-1).

The keyword arguments atol and rtol, specify the absolute and relative tolerances for the nonzero coefficients of DEN(λ), respectively.

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

source
MatrixPencils.rmevalFunction
rmeval(NUM,DEN,val) -> Rval

Evaluate the rational matrix R(λ) := NUM(λ)./DEN(λ) for λ = val.

NUM(λ) is a polynomial matrix of the form NUM(λ) = N_1 + λ N_2 + ... + λ**k N_(k+1), for which the coefficient matrices N_i, i = 1, ..., k+1 are stored in the 3-dimensional matrix N, where N[:,:,i] contains the i-th coefficient matrix N_i (multiplying λ**(i-1)).

DEN(λ) is a polynomial matrix of the form DEN(λ) = D_1 + λ D_2 + ... + λ**l D_(l+1), for which the coefficient matrices D_i, i = 1, ..., l+1, are stored in the 3-dimensional matrix D, where D[:,:,i] contain the i-th coefficient matrix D_i (multiplying λ**(i-1)).

Alternatively, NUM(λ) and DEN(λ) can be specified as matrices of elements of the Polynomial type provided by the Polynomials package. In this case, no check is performed that N(λ) and D(λ) have the same indeterminates.

source
MatrixPencils.rm2lsFunction
  rm2ls(NUM, DEN; contr = false, obs = false, noseig = false, minimal = false,
        fast = true, atol = 0, rtol) -> (A, E, B, C, D, blkdims)

Build a structured linearization as a system matrix S(λ) of the form

           | A-λE | B | 
    S(λ) = |------|---|
           |  C   | D |

for the rational matrix R(λ) = NUM(λ) ./ DEN(λ), such that S(λ) preserves a part of the Kronecker structure of R(λ). The regular pencil A-λE has the block diagonal form

         | Af-λI |   0   | 
  A-λE = |-------|-------|
         |  0    | I-λEi |

and the dimensions of the diagonal blocks Af and Ei are provided in blkdims[1] and blkdims[2], respectively.

NUM(λ) is a polynomial matrix of the form NUM(λ) = N_1 + λ N_2 + ... + λ**k N_(k+1), for which the coefficient matrices N_i, i = 1, ..., k+1 are stored in the 3-dimensional matrix NUM, where NUM[:,:,i] contains the i-th coefficient matrix N_i (multiplying λ**(i-1)).

DEN(λ) is a polynomial matrix of the form DEN(λ) = D_1 + λ D_2 + ... + λ**l D_(l+1), for which the coefficient matrices D_i, i = 1, ..., l+1, are stored in the 3-dimensional matrix DEN, where DEN[:,:,i] contain the i-th coefficient matrix D_i (multiplying λ**(i-1)).

Alternatively, NUM(λ) and DEN(λ) can be specified as matrices of elements of the Polynomial type provided by the Polynomials package. In this case, no check is performed that N(λ) and D(λ) have the same indeterminates.

If n is the order of A-λE, then the computed linearization satisfies:

(1) A-λE is regular and R(λ) = C*inv(λE-A)*B+D;

(2) rank[B A-λE] = n (controllability) if minimal = true or contr = true, in which case the right Kronecker structure is preserved;

(3) rank[A-λE; C] = n (observability) if minimal = true or obs = true, in which case the left Kronecker structure is preserved;

(4) A-λE has no non-dynamic modes if minimal = true or noseig = true.

If conditions (1)-(4) are satisfied, the linearization is called minimal and the resulting order n is the least achievable order. If conditions (1)-(3) are satisfied, the linearization is called irreducible and the resulting order n is the least achievable order using orthogonal similarity transformations. For an irreducible linearization S(λ) preserves the pole-zero structure (finite and infinite) and the left and right Kronecker structures of R(λ).

The descriptor system based linearization is built using the methods described in [1] in conjunction with pencil manipulation algorithms [2] and [3] to compute reduced order linearizations. These algorithms employ rank determinations based on either the use of rank revealing QR-decomposition with column pivoting, if fast = true, or the SVD-decomposition, if fast = false. The rank decision based on the SVD-decomposition is generally more reliable, but the involved computational effort is higher.

The keyword arguments atol and rtol, specify the absolute and relative tolerances, respectively, for the nonzero coefficients of NUM(λ) and DEN(λ).

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

[2] P. Van Dooreen, The generalized eigenstructure problem in linear system theory, IEEE Transactions on Automatic Control, vol. AC-26, pp. 111-129, 1981.

[3] A. Varga, Solving Fault Diagnosis Problems - Linear Synthesis Techniques, Springer Verlag, 2017.

source
MatrixPencils.ls2rmFunction
ls2rm(A, E, B, C, D; fast = true, atol1 = 0, atol2 = 0, gaintol = 0, rtol = min(atol1,atol2) > 0 ? 0 : n*ϵ, val) -> (NUM, DEN)

Build the rational matrix R(λ) = C*inv(λE-A)*B+D := NUM(λ) ./ DEN(λ) corresponding to its structured linearization

        | A-λE | B | 
 S(λ) = |------|---|
        |  C   | D |

by explicitly determining for each rational entry of R(λ), its numerator coefficients from its finite zeros and gain, and its denominator coefficients from its finite poles (see [1]).

The keyword arguments atol1 and atol2 specify the absolute tolerances for the elements of A, B, C, D, and, respectively, of E, and rtol specifies the relative tolerances for the nonzero elements of A, B, C, D and E. The default relative tolerance is (n+1)*ϵ, where n is the dimension of A, and ϵ is the machine epsilon of the element type of coefficients of A.

The keyword argument gaintol specifies the threshold for the magnitude of the nonzero elements of the gain matrix C*inv(γE-A)*B+D, where γ = val if val is a number or γ is a randomly chosen complex value of unit magnitude, if val = missing. Generally, val should not be a zero of any of entries of R.

NUM(λ) is a polynomial matrix of the form NUM(λ) = N_1 + λ N_2 + ... + λ**k N_(k+1), for which the coefficient matrices N_i, i = 1, ..., k+1 are stored in the 3-dimensional matrix NUM, where NUM[:,:,i] contains the i-th coefficient matrix N_i (multiplying λ**(i-1)).

DEN(λ) is a polynomial matrix of the form DEN(λ) = D_1 + λ D_2 + ... + λ**l D_(l+1), for which the coefficient matrices D_i, i = 1, ..., l+1, are stored in the 3-dimensional matrix DEN, where DEN[:,:,i] contain the i-th coefficient matrix D_i (multiplying λ**(i-1)).

[1] A. Varga Computation of transfer function matrices of generalized state-space models. Int. J. Control, 50:2543–2561, 1989.

source
MatrixPencils.rm2lpsFunction
 rm2lps(NUM, DEN; contr = false, obs = false) -> (A, E, B, F, C, G, D, H, blkdims)

Build a structured pencil based linearization as a system matrix S(λ) of the form

        | A-λE | B-λF | 
 S(λ) = |------|------|
        | C-λG | D-λH |

for the rational matrix R(λ) = NUM(λ) ./ DEN(λ) such that S(λ) preserves a part of the Kronecker structure of R(λ). The regular pencil A-λE has the block diagonal form

         | Af-λI |   0    | 
  A-λE = |-------|--------|
         |  0    | Ai-λEi |

and the dimensions of the diagonal blocks Af and Ai are provided in blkdims[1] and blkdims[2], respectively.

NUM(λ) is a polynomial matrix of the form NUM(λ) = N_1 + λ N_2 + ... + λ**k N_(k+1), for which the coefficient matrices N_i, i = 1, ..., k+1 are stored in the 3-dimensional matrix NUM, where NUM[:,:,i] contains the i-th coefficient matrix N_i (multiplying λ**(i-1)).

DEN(λ) is a polynomial matrix of the form DEN(λ) = D_1 + λ D_2 + ... + λ**l D_(l+1), for which the coefficient matrices D_i, i = 1, ..., l+1, are stored in the 3-dimensional matrix DEN, where DEN[:,:,i] contain the i-th coefficient matrix D_i (multiplying λ**(i-1)).

Alternatively, NUM(λ) and DEN(λ) can be specified as matrices of elements of the Polynomial type provided by the Polynomials package. In this case, no check is performed that N(λ) and D(λ) have the same indeterminates.

If n is the order of the matrix A, then the computed linearization satisfies:

(1) A-λE is a n x n regular pencil;

(2) R(λ) = (C-λG)*inv(λE-A)*(B-λF)+D-λH;

(3) rank[B-λF A-λE] = n for any finite and infinite λ (strong controllability) if contr = true, in which case the right Kronecker structure is preserved;

(4) rank[A-λE; C-λG] = n for any finite and infinite λ (strong observability) if obs = true, in which case the left Kronecker structure is preserved.

If conditions (1)-(4) are satisfied, the linearization is called strongly minimal, the resulting order n is the least achievable order and S(λ) preserves the pole-zero structure (finite and infinite) and the left and right Kronecker structures of R(λ).

The pencil based linearization is built using the methods described in [1] in conjunction with pencil manipulation algorithms [2] and [3] to compute reduced order linearizations. These algorithms employ rank determinations based on either the use of rank revealing QR-decomposition with column pivoting, if fast = true, or the SVD-decomposition, if fast = false. The rank decision based on the SVD-decomposition is generally more reliable, but the involved computational effort is higher.

The keyword arguments atol and rtol, specify the absolute and relative tolerances for the nonzero coefficients of NUM(λ) and DEN(λ), respectively.

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

[2] P. Van Dooreen, The generalized eigenstructure problem in linear system theory, IEEE Transactions on Automatic Control, vol. AC-26, pp. 111-129, 1981.

[3] F.M. Dopico, M.C. Quintana and P. Van Dooren, Linear system matrices of rational transfer functions, in "Realization and Model Reduction of Dynamical Systems, A Festschrift to honor the 70th birthday of Thanos Antoulas", Eds. C. Beattie, P. Benner, M. Embree, S. Gugercin and S. Lefteriu, Springer-Verlag, 2020. arXiv:1903.05016

source
MatrixPencils.lps2rmFunction
lps2rm(A, E, B, F, C, G, D, H; fast = true, atol1 = 0, atol2 = 0, gaintol = 0, rtol = min(atol1,atol2) > 0 ? 0 : n*ϵ, val) -> (NUM, DEN)

Build the rational matrix R(λ) = (C-λG)*inv(λE-A)*(B-λF)+D-λH := NUM(λ) ./ DEN(λ) corresponding to its structured linearization

        | A-λE | B-λF | 
 S(λ) = |------|------|
        | C-λG | D-λH |

by explicitly determining for each rational entry of R(λ), its numerator coefficients from its finite zeros and gain, and its denominator coefficients from its finite poles. An extension of the approach of [1] is employed, relying on the procedures of [2] to compute strongly irreducible linearizations.

The keyword arguments atol1 and atol2 specify the absolute tolerances for the elements of A, B, C, D, and of E, F, G, H, respectively, and rtol specifies the relative tolerances for the nonzero elements of A, B, C, D, E, F,G,H. The default relative tolerance is(n+2)*ϵ, wherenis the size of the size dimension ofA, andϵis the machine epsilon of the element type of coefficients ofA`.

The keyword argument gaintol specifies the threshold for the magnitude of the nonzero elements of the gain matrix C*inv(γE-A)*B+D, where γ = val if val is a number or γ is a randomly chosen complex value of unit magnitude, if val = missing. Generally, val should not be a root of any of entries of P.

[1] A. Varga Computation of transfer function matrices of generalized state-space models. Int. J. Control, 50:2543–2561, 1989.

[2] F.M. Dopico, M.C. Quintana and P. Van Dooren, Linear system matrices of rational transfer functions, in "Realization and Model Reduction of Dynamical Systems, A Festschrift to honor the 70th birthday of Thanos Antoulas", Eds. C. Beattie, P. Benner, M. Embree, S. Gugercin and S. Lefteriu, Springer-Verlag, 2020. arXiv:1903.05016

source
MatrixPencils.lpmfd2lsFunction
 lpmfd2ls(DEN, NUM; fast = true, contr = false, obs = false, minimal = false, atol = 0, rtol) -> (A, E, B, C, D)

Build a structured linearization as a system matrix S(λ) of the form

        | A-λE | B | 
 S(λ) = |------|---|
        |  C   | D |

of the left polynomial matrix fractional description R(λ) = inv(DEN(λ))*NUM(λ), such that R(λ) = C*inv(λE-A)*B+D. The resulting linearization S(λ) preserves a part, if minimal = false, or the complete Kronecker structure, if minimal = true, of R(λ). In the latter case, the order n of A-λE is the least possible one.

DEN(λ) and NUM(λ) can be specified as polynomial matrices of the form X(λ) = X_1 + λ X_2 + ... + λ**k X_(k+1), for X = DEN or X = NUM, for which the coefficient matrices X_i, i = 1, ..., k+1, are stored in the 3-dimensional matrices X, where X[:,:,i] contains the i-th coefficient matrix X_i (multiplying λ**(i-1)).

DEN(λ) and NUM(λ) can also be specified as matrices, vectors or scalars of elements of the Polynomial type provided by the Polynomials package. In this case, no check is performed that N(λ) and D(λ) have the same indeterminates.

The computed structured linearization satisfies:

(1) A-λE is regular;

(2) rank[B A-λE] = n (controllability) if minimal = true or contr = true, in which case the right Kronecker structure is preserved;

(3) rank[A-λE; C] = n (observability) if minimal = true or obs = true, in which case the left Kronecker structure is preserved;

(4) S(λ) has no simple infinite eigenvalues if minimal = true.

If conditions (1)-(4) are satisfied, the linearization is called minimal and the resulting order n is the least achievable order. If conditions (1)-(3) are satisfied, the linearization is called irreducible and the resulting order n is the least achievable order using orthogonal similarity transformations. For an irreducible linearization S(λ) preserves the pole-zero structure (finite and infinite) and the left and right Kronecker structures of R(λ).

The keyword arguments atol and rtol, specify, respectively, the absolute and relative tolerance for the nonzero coefficients of the matrices DEN(λ) and NUM(λ). The default relative tolerance is nt*ϵ, where nt is the size of the square matrix DEN(λ) and ϵ is the machine epsilon of the element type of its coefficients.

The structured linearization is built using the methods described in [1].

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

source
MatrixPencils.rpmfd2lsFunction
 rpmfd2ls(DEN, NUM; fast = true, contr = false, obs = false, minimal = false, atol = 0, rtol) -> (A, E, B, C, D)

Build a structured linearization as a system matrix S(λ) of the form

        | A-λE | B | 
 S(λ) = |------|---|
        |  C   | D |

of the right polynomial matrix fractional description R(λ) = NUM(λ)*inv(DEN(λ)), such that R(λ) = C*inv(λE-A)*B+D. The resulting linearization S(λ) preserves a part, if minimal = false, or the complete Kronecker structure, if minimal = true, of R(λ). In the latter case, the order n of A-λE is the least possible one.

DEN(λ) and NUM(λ) can be specified as polynomial matrices of the form X(λ) = X_1 + λ X_2 + ... + λ**k X_(k+1), for X = DEN or X = NUM, for which the coefficient matrices X_i, i = 1, ..., k+1, are stored in the 3-dimensional matrices X, where X[:,:,i] contains the i-th coefficient matrix X_i (multiplying λ**(i-1)).

DEN(λ) and NUM(λ) can also be specified as matrices, vectors or scalars of elements of the Polynomial type provided by the Polynomials package. In this case, no check is performed that N(λ) and D(λ) have the same indeterminates.

The computed structured linearization satisfies:

(1) A-λE is regular;

(2) rank[B A-λE] = n (controllability) if minimal = true or contr = true, in which case the right Kronecker structure is preserved;

(3) rank[A-λE; C] = n (observability) if minimal = true or obs = true, in which case the left Kronecker structure is preserved;

(4) S(λ) has no simple infinite eigenvalues if minimal = true.

If conditions (1)-(4) are satisfied, the linearization is called minimal and the resulting order n is the least achievable order. If conditions (1)-(3) are satisfied, the linearization is called irreducible and the resulting order n is the least achievable order using orthogonal similarity transformations. For an irreducible linearization S(λ) preserves the pole-zero structure (finite and infinite) and the left and right Kronecker structures of R(λ).

The keyword arguments atol and rtol, specify, respectively, the absolute and relative tolerance for the nonzero coefficients of the matrices DEN(λ) and NUM(λ). The default relative tolerance is nt*ϵ, where nt is the size of the square matrix DEN(λ) and ϵ is the machine epsilon of the element type of its coefficients.

The structured linearization is built using the methods described in [1].

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

source
MatrixPencils.lpmfd2lpsFunction
 lpmfd2lps(DEN, NUM; fast = true, contr = false, obs = false, minimal = false, atol = 0, rtol) -> (A, E, B, F, C, G, D, H)

Build a structured linearization as a system matrix S(λ) of the form

        | A-λE | B-λF | 
 S(λ) = |------|------|
        | C-λG | D-λH |

of the left polynomial matrix fractional description R(λ) = inv(DEN(λ))*NUM(λ), such that R(λ) = (C-λG)*inv(λE-A)*(B-λF)+D-λH. The resulting linearization S(λ) preserves a part, if minimal = false, or the complete Kronecker structure, if minimal = true, of R(λ). In the latter case, the order n of A-λE is the least possible one.

DEN(λ) and NUM(λ) can be specified as polynomial matrices of the form X(λ) = X_1 + λ X_2 + ... + λ**k X_(k+1), for X = DEN or X = NUM, for which the coefficient matrices X_i, i = 1, ..., k+1, are stored in the 3-dimensional matrices X, where X[:,:,i] contains the i-th coefficient matrix X_i (multiplying λ**(i-1)).

DEN(λ) and NUM(λ) can also be specified as matrices, vectors or scalars of elements of the Polynomial type provided by the Polynomials package. In this case, no check is performed that N(λ) and D(λ) have the same indeterminates.

The computed structured linearization satisfies:

(1) A-λE is regular;

(2) rank[B-λF A-λE] = n (strong controllability) if minimal = true or contr = true, in which case the right Kronecker structure is preserved;

(3) rank[A-λE; C-λG] = n (strong observability) if minimal = true or obs = true, in which case the left Kronecker structure is preserved.

If conditions (1)-(3) are satisfied, the linearization is called strongly minimal, the resulting order n is the least achievable order and S(λ) preserves the pole-zero structure (finite and infinite) and the left and right Kronecker structures of R(λ).

The keyword arguments atol and rtol, specify, respectively, the absolute and relative tolerance for the nonzero coefficients of the matrices DEN(λ) and NUM(λ). The default relative tolerance is nt*ϵ, where nt is the size of the square matrix DEN(λ) and ϵ is the machine epsilon of the element type of its coefficients.

The structured linearization is built using the methods described in [1].

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

source
MatrixPencils.rpmfd2lpsFunction
 rpmfd2lps(DEN, NUM; fast = true, contr = false, obs = false, minimal = false, atol = 0, rtol) -> (A, E, B, F, C, G, D, H)

Build a structured linearization as a system matrix S(λ) of the form

        | A-λE | B-λF | 
 S(λ) = |------|------|
        | C-λG | D-λH |

of the right polynomial matrix fractional description R(λ) = NUM(λ)*inv(DEN(λ)), such that R(λ) = (C-λG)*inv(λE-A)*(B-λF)+D-λH. The resulting linearization S(λ) preserves a part, if minimal = false, or the complete Kronecker structure, if minimal = true, of R(λ). In the latter case, the order n of A-λE is the least possible one.

DEN(λ) and NUM(λ) can be specified as polynomial matrices of the form X(λ) = X_1 + λ X_2 + ... + λ**k X_(k+1), for X = DEN or X = NUM, for which the coefficient matrices X_i, i = 1, ..., k+1, are stored in the 3-dimensional matrices X, where X[:,:,i] contains the i-th coefficient matrix X_i (multiplying λ**(i-1)).

DEN(λ) and NUM(λ) can also be specified as matrices, vectors or scalars of elements of the Polynomial type provided by the Polynomials package. In this case, no check is performed that N(λ) and D(λ) have the same indeterminates.

The computed structured linearization satisfies:

(1) A-λE is regular;

(2) rank[B-λF A-λE] = n (strong controllability) if minimal = true or contr = true, in which case the right Kronecker structure is preserved;

(3) rank[A-λE; C-λG] = n (strong observability) if minimal = true or obs = true, in which case the left Kronecker structure is preserved.

If conditions (1)-(3) are satisfied, the linearization is called strongly minimal, the resulting order n is the least achievable order and S(λ) preserves the pole-zero structure (finite and infinite) and the left and right Kronecker structures of R(λ).

The keyword arguments atol and rtol, specify, respectively, the absolute and relative tolerance for the nonzero coefficients of the matrices DEN(λ) and NUM(λ). The default relative tolerance is nt*ϵ, where nt is the size of the square matrix DEN(λ) and ϵ is the machine epsilon of the element type of its coefficients.

The structured linearization is built using the methods described in [1].

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

source
MatrixPencils.pminv2lsFunction
 pminv2ls(P; fast = true, contr = false, obs = false, minimal = false, atol = 0, rtol) -> (A, E, B, C, D)

Build a structured linearization as a system matrix S(λ) of the form

        | A-λE | B | 
 S(λ) = |------|---|
        |  C   | D |

of the inverse R(λ) = inv(P(λ)), such that R(λ) = C*inv(λE-A)*B+D. The resulting linearization S(λ) preserves a part, if minimal = false, or the complete Kronecker structure, if minimal = true, of R(λ). In the latter case, the order n of A-λE is the least possible one.

P(λ) can be specified as a polynomial matrix of the form P(λ) = P_1 + λ P_2 + ... + λ**k P_(k+1), for which the coefficient matrices P_i, i = 1, ..., k+1, are stored in the 3-dimensional matrix P, where P[:,:,i] contains the i-th coefficient matrix P_i (multiplying λ**(i-1)).

P(λ) can also be specified as a matrix or scalar of elements of the Polynomial type provided by the Polynomials package.

The computed structured linearization satisfies:

(1) A-λE is regular;

(2) rank[B A-λE] = n (controllability) if minimal = true or contr = true, in which case the right Kronecker structure is preserved;

(3) rank[A-λE; C] = n (observability) if minimal = true or obs = true, in which case the left Kronecker structure is preserved;

(4) S(λ) has no simple infinite eigenvalues if minimal = true.

If conditions (1)-(4) are satisfied, the linearization is called minimal and the resulting order n is the least achievable order. If conditions (1)-(3) are satisfied, the linearization is called irreducible and the resulting order n is the least achievable order using orthogonal similarity transformations. For an irreducible linearization S(λ) preserves the pole-zero structure (finite and infinite) and the left and right Kronecker structures of R(λ).

The keyword arguments atol and rtol, specify, respectively, the absolute and relative tolerance for the nonzero coefficients of the matrix P(λ). The default relative tolerance is nt*ϵ, where nt is the size of the square matrix P(λ) and ϵ is the machine epsilon of the element type of its coefficients.

The structured linearization is built using the methods described in [1].

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

source
MatrixPencils.pminv2lpsFunction
 pminv2lps(P; fast = true, contr = false, obs = false, minimal = false, atol = 0, rtol) -> (A, E, B, F, C, G, D, H)

Build a structured linearization as a system matrix S(λ) of the form

        | A-λE | B-λF | 
 S(λ) = |------|------|
        | C-λG | D-λH |

of the inverse R(λ) = inv(P(λ)), such that R(λ) = (C-λG)*inv(λE-A)*(B-λF)+D-λH. The resulting linearization S(λ) preserves a part, if minimal = false, or the complete Kronecker structure, if minimal = true, of R(λ). In the latter case, the order n of A-λE is the least possible one.

P(λ) can be specified as a polynomial matrix of the form P(λ) = P_1 + λ P_2 + ... + λ**k P_(k+1), for which the coefficient matrices P_i, i = 1, ..., k+1, are stored in the 3-dimensional matrix P, where P[:,:,i] contains the i-th coefficient matrix P_i (multiplying λ**(i-1)).

P(λ) can also be specified as a matrix or scalar of elements of the Polynomial type provided by the Polynomials package.

The computed structured linearization satisfies:

(1) A-λE is regular;

(2) rank[B-λF A-λE] = n (strong controllability) if minimal = true or contr = true, in which case the right Kronecker structure is preserved;

(3) rank[A-λE; C-λG] = n (strong observability) if minimal = true or obs = true, in which case the left Kronecker structure is preserved.

If conditions (1)-(3) are satisfied, the linearization is called strongly minimal, the resulting order n is the least achievable order and S(λ) preserves the pole-zero structure (finite and infinite) and the left and right Kronecker structures of R(λ).

The keyword arguments atol and rtol, specify, respectively, the absolute and relative tolerance for the nonzero coefficients of the matrix P(λ). The default relative tolerance is nt*ϵ, where nt is the size of the square matrix P(λ) and ϵ is the machine epsilon of the element type of its coefficients.

The structured linearization is built using the methods described in [1].

[1] A. Varga, On computing the Kronecker structure of polynomial and rational matrices using Julia, 2020, arXiv:2006.06825.

source