Some applications of structured matrix pencil computations

FunctionDescription
spkstructDetermination of the complete Kronecker structure
sprankDetermination of the normal rank
speigvalsComputation of the finite and infinite eigenvalues
spzerosComputation of the finite and infinite zeros
MatrixPencils.spkstructFunction
spkstruct(A, E, B, C, D; fast = false, atol1::Real = 0, atol2::Real = 0, rtol::Real=min(atol1,atol2)>0 ? 0 : n*ϵ) -> KRInfo

Determine the Kronecker-structure information of the structured matrix pencil M-λN

          | A-λE | B | 
 M - λN = |------|---|
          |  C   | D |

and return an KRInfo object.

The information on the Kronecker-structure consists of the right Kronecker indices rki, left Kronecker indices lki, infinite elementary divisors id, the number of finite eigenvalues nf, the normal rank nrank, and can be obtained from KRInfo as KRInfo.rki, KRInfo.lki, KRInfo.id, KRInfo.nf and KRInfo.nrank, respectively. For more details, see pkstruct.

The right Kronecker indices are provided in the integer vector rki, where each i-th element rki[i] is the row dimension k of an elementary Kronecker block of size k x (k+1). The number of elements of rki is the dimension of the right nullspace of the pencil M-λN and their sum is the least degree of a right polynomial nullspace basis.

The left Kronecker indices are provided in the integer vector lki, where each i-th element lki[i] is the column dimension k of an elementary Kronecker block of size (k+1) x k. The number of elements of lki is the dimension of the left nullspace of the pencil M-λN and their sum is the least degree of a left polynomial nullspace basis.

The multiplicities of infinite eigenvalues are provided in the integer vector id, where each i-th element id[i] is the order of an infinite elementary divisor (i.e., the multiplicity of an infinite eigenvalue).

The determination of the Kronecker-structure information is performed by reducing the pencil M-λN to an appropriate Kronecker-like form (KLF) which exhibits the number of finite eigenvalues, the multiplicities of the infinite eigenvalues, the left and right Kronecker indices and the normal rank. The reduction is performed using orthonal similarity transformations and involves rank decisions based on rank revealing QR-decompositions with column pivoting, if fast = true, or, the more reliable, SVD-decompositions, if fast = false. For efficiency purposes, the reduction is only partially performed, without accumulating the performed orthogonal transformations.

The keyword arguements atol1, atol2 and rtol specify the absolute tolerance for the nonzero elements of M, the absolute tolerance for the nonzero elements of N, and the relative tolerance for the nonzero elements of M and N, respectively. The default relative tolerance is n*ϵ, where n is the size of the smallest dimension of M, and ϵ is the machine epsilon of the element type of M.

source
MatrixPencils.sprankFunction
sprank(A, E, B, C, D; fastrank = true, atol1 = 0, atol2 = 0, rtol = min(atol1,atol2)>0 ? 0 : n*ϵ)

Compute the normal rank of the structured matrix pencil M - λN

          | A-λE | B | 
 M - λN = |------|---|.
          |  C   | D |

If fastrank = true, the rank is evaluated by counting how many singular values of M - γ N have magnitude greater than max(max(atol1,atol2), rtol*σ₁), where σ₁ is the largest singular value of M - γ N and γ is a randomly generated value. If fastrank = false, the rank is evaluated as nr + ni + nf + nl, where nr and nl are the sums of right and left Kronecker indices, respectively, while ni and nf are the number of infinite and finite eigenvalues, respectively. The sums nr+ni and nf+nl, are determined from an appropriate Kronecker-like form (KLF) exhibiting the spliting of the right and left structures of the pencil M - λN.

The keyword arguments atol1, atol2, and rtol, specify, respectively, the absolute tolerance for the nonzero elements of M, the absolute tolerance for the nonzero elements of N, and the relative tolerance for the nonzero elements of M and N. The default relative tolerance is n*ϵ, where n is the size of the smallest dimension of M, and ϵ is the machine epsilon of the element type of M. For efficiency purpose, the reduction to the relevant KLF is only partially performed using rank decisions based on rank revealing SVD-decompositions.

source
MatrixPencils.speigvalsFunction
speigvals(A, E, B, C, D; fast = false, atol1::Real = 0, atol2::Real = 0, rtol::Real=min(atol1,atol2)>0 ? 0 : n*ϵ) -> (val, iz, KRInfo)

Return the (finite and infinite) eigenvalues of the structured matrix pencil M-λN

          | A-λE | B | 
 M - λN = |------|---|
          |  C   | D |

in val and information on the Kronecker-structure in the KRInfo object.

The information on the Kronecker-structure consists of the right Kronecker indices rki, left Kronecker indices lki, infinite elementary divisors id, the number of finite eigenvalues nf, the normal rank nrank, and can be obtained from KRInfo as KRInfo.rki, KRInfo.lki, KRInfo.id, KRInfo.nf and KRInfo.nrank, respectively. For more details, see pkstruct.

The computation of the eigenvalues is performed by reducing the pencil M-λN to an appropriate Kronecker-like form (KLF) which exhibits the splitting of the infinite and finite eigenvalue, the multiplicities of the infinite eigenvalues, the left and right Kronecker indices and the normal rank. The reduction is performed using orthonal similarity transformations and involves rank decisions based on rank revealing QR-decompositions with column pivoting, if fast = true, or, the more reliable, SVD-decompositions, if fast = false. For efficiency purposes, the reduction is only partially performed, without accumulating the performed orthogonal transformations.

The keyword arguements atol1, atol2 and rtol specify the absolute tolerance for the nonzero elements of M, the absolute tolerance for the nonzero elements of N, and the relative tolerance for the nonzero elements of M and N, respectively. The default relative tolerance is n*ϵ, where n is the size of the smallest dimension of M, and ϵ is the machine epsilon of the element type of M.

source
MatrixPencils.spzerosFunction
spzeros(A, E, B, C, D; fast = false, atol1::Real = 0, atol2::Real = 0, rtol::Real=min(atol1,atol2)>0 ? 0 : n*ϵ) -> (val, iz, KRInfo)

Return the (finite and infinite) Smith zeros of the structured matrix pencil M-λN

          | A-λE | B | 
 M - λN = |------|---|
          |  C   | D |

in val, information on the multiplicities of infinite zeros in iz and information on the Kronecker-structure in the KRInfo object.

The information on the multiplicities of infinite zeros is provided in the vector iz, where each i-th element iz[i] is equal to k-1, where k is the order of an infinite elementary divisor with k > 0. The number of infinite zeros contained in val is the sum of the components of iz.

The information on the Kronecker-structure consists of the right Kronecker indices rki, left Kronecker indices lki, infinite elementary divisors id, the number of finite eigenvalues nf, the normal rank nrank, and can be obtained from KRInfo as KRInfo.rki, KRInfo.lki, KRInfo.id, KRInfo.nf and KRInfo.nrank, respectively. For more details, see pkstruct.

The computation of the zeros is performed by reducing the pencil M-λN to an appropriate Kronecker-like form (KLF) which exhibits the splitting of the infinite and finite eigenvalue, the multiplicities of the infinite eigenvalues, the left and right Kronecker indices and the normal rank. The reduction is performed using orthonal similarity transformations and involves rank decisions based on rank revealing QR-decompositions with column pivoting, if fast = true, or, the more reliable, SVD-decompositions, if fast = false. For efficiency purposes, the reduction is only partially performed, without accumulating the performed orthogonal transformations.

The keyword arguments atol1, atol2 and rtol specify the absolute tolerance for the nonzero elements of M, the absolute tolerance for the nonzero elements of N, and the relative tolerance for the nonzero elements of M and N, respectively. The default relative tolerance is n*ϵ, where n is the size of the smallest dimension of M, and ϵ is the machine epsilon of the element type of M.

source