Linear Operators Related to Matrix Equation Solvers

Lyapunov and Lyapunov-like Operators

MatrixEquations.lyapopFunction
L = lyapop(A; disc = false, her = false)

Define, for an n x n matrix A, the continuous Lyapunov operator L:X -> AX+XA' if disc = false or the discrete Lyapunov operator L:X -> AXA'-X if disc = true. If her = false the Lyapunov operator L:X -> Y maps general square matrices X into general square matrices Y, and the associated matrix M = Matrix(L) is $n^2 \times n^2$. If her = true the Lyapunov operator L:X -> Y maps symmetric/Hermitian matrices X into symmetric/Hermitian matrices Y, and the associated matrix M = Matrix(L) is $n(n+1)/2 \times n(n+1)/2$. For the definitions of the Lyapunov operators see:

M. Konstantinov, V. Mehrmann, P. Petkov. On properties of Sylvester and Lyapunov operators. Linear Algebra and its Applications 312:35–71, 2000.

source
L = lyapop(A, E; disc = false, her = false)

Define, for a pair (A,E) of n x n matrices, the continuous Lyapunov operator L:X -> AXE'+EXA' if disc = false or the discrete Lyapunov operator L:X -> AXA'-EXE' if disc = true. If her = false the Lyapunov operator L:X -> Y maps general square matrices X into general square matrices Y, and the associated matrix M = Matrix(L) is $n^2 \times n^2$. If her = true the Lyapunov operator L:X -> Y maps symmetric/Hermitian matrices X into symmetric/Hermitian matrices Y, and the associated M = Matrix(L) is a $n(n+1)/2 \times n(n+1)/2$. For the definitions of the Lyapunov operators see:

M. Konstantinov, V. Mehrmann, P. Petkov. On properties of Sylvester and Lyapunov operators. Linear Algebra and its Applications 312:35–71, 2000.

source
MatrixEquations.invlyapopFunction
LINV = invlyapop(A; disc = false, her = false)

Define LINV, the inverse of the continuous Lyapunov operator L:X -> AX+XA' for disc = false or the inverse of the discrete Lyapunov operator L:X -> AXA'-X for disc = true, where A is an n x n matrix. If her = false the inverse Lyapunov operator LINV:Y -> X maps general square matrices Y into general square matrices X, and the associated matrix M = Matrix(LINV) is $n^2 \times n^2$. If her = true the inverse Lyapunov operator LINV:Y -> X maps symmetric/Hermitian matrices Y into symmetric/Hermitian matrices X, and the associated matrix M = Matrix(LINV) is $n(n+1)/2 \times n(n+1)/2$. For the definitions of the Lyapunov operators see:

M. Konstantinov, V. Mehrmann, P. Petkov. On properties of Sylvester and Lyapunov operators. Linear Algebra and its Applications 312:35–71, 2000.

source
LINV = invlyapop(A, E; disc = false, her = false)

Define LINV, the inverse of the continuous Lyapunov operator L:X -> AXE'+EXA' for disc = false or the inverse of the discrete Lyapunov operator L:X -> AXA'-EXE' for disc = true, where (A,E) is a pair of n x n matrices. If her = false the inverse Lyapunov operator LINV:Y -> X maps general square matrices Y into general square matrices X, and the associated matrix M = Matrix(LINV) is $n^2 \times n^2$. If her = true the inverse Lyapunov operator LINV:Y -> X maps symmetric/Hermitian matrices Y into symmetric/Hermitian matrices X, and the associated matrix M = Matrix(LINV) is $n(n+1)/2 \times n(n+1)/2$. For the definitions of the Lyapunov operators see:

M. Konstantinov, V. Mehrmann, P. Petkov. On properties of Sylvester and Lyapunov operators. Linear Algebra and its Applications 312:35–71, 2000.

source
MatrixEquations.lyaplikeopFunction
L = lyaplikeop(A; isig = 1, adj = false, htype = false)

For a matrix A, define for adj = false the continuous T-Lyapunov operator L:X -> A*X+isig*transpose(X)*transpose(A) if htype = false or the continuous H-Lyapunov operator L:X -> A*X+isig*X'*A' if htype = true, or define for adj = true the continuous T-Lyapunov operator L:X -> A*transpose(X)+X*transpose(A) if htype = false, or the continuous H-Lyapunov operator L:X -> A*X'+isig*X*A' if htype = true.

source
MatrixEquations.tulyaplikeopFunction
L = tulyaplikeop(U; adj = false)

Define, for an upper triangular matrix U, the continuous T-Lyapunov operator L:X -> transpose(U)*X+transpose(X)*U, if adj = false, or L:X -> U*transpose(X)+X*transpose(U) if adj = true.

source
MatrixEquations.hulyaplikeopFunction
L = hulyaplikeop(U; adj = false)

Define, for an upper triangular matrix U, the continuous H-Lyapunov operator L:X -> U'*X+X'*U, if adj = false, L:X -> U*X'+X*U' if adj = true.

source

Sylvester and Sylvester-like Operators

MatrixEquations.sylvopFunction
M = sylvop(A, B; disc = false)

Define the continuous Sylvester operator M: X -> AX+XB if disc = false or the discrete Sylvester operator M: X -> AXB+X if disc = true, where A and B are square matrices.

source
M = sylvop(A, B, C, D)

Define the generalized Sylvester operator M: X -> AXB+CXD, where (A,C) and (B,D) are pairs of square matrices.

source
MatrixEquations.invsylvopFunction
MINV = invsylvop(A, B; disc = false)

Define MINV, the inverse of the continuous Sylvester operator M: X -> AX+XB if disc = false or of the discrete Sylvester operator M: X -> AXB+X if disc = true, where A and B are square matrices.

source
MINV = invsylvop(A, B, C, D)

Define MINV, the inverse of the generalized Sylvester operator M: X -> AXB+CXD, where (A,C) and (B,D) are pairs of square matrices.

source
MatrixEquations.gsylvopFunction
M = gsylvop(A, B, C, D; mx, nx, htype = false)

Define the generalized T-Sylvester operator M: X -> ∑ A_i*X*B_i + ∑ C_j'*transpose(X)*D_j, if htype = false or the generalized H-Sylvester operator M: X -> ∑ A_i*X*B_i + ∑ C_j'*X'*D_j, if htype = true. A_i and C_j are matrices having the same row dimension and B_i and D_j are matrices having the same column dimension. A_i and B_i are contained in the k-vectors of matrices A and B, respectively, and C_j and D_j are contained in the l-vectors of matrices C and D, respectively. Any of the component matrices can be given as an UniformScaling. The keyword parameters mx and nx can be used to specify the row and column dimensions of X, if they cannot be inferred from the data.

source

Sylvester System Operators

MatrixEquations.sylvsysopFunction
M = sylvsysop(A, B, C, D)

Define the operator M: (X,Y) -> (AX+YB, CX+YD), where (A,C) and (B,D) are pairs of square matrices.

source
MatrixEquations.invsylvsysopFunction
MINV = invsylvsysop(A, B, C, D)

Define MINV, the inverse of the linear operator M: (X,Y) -> (AX+YB, CX+YD ), where (A,C) and (B,D) a pairs of square matrices.

source

Elementary Matrix Operators

MatrixEquations.trmatopType
M = trmatop(n, m)
M = trmatop(A)

Define the transposition operator M: X -> X' for all n x m matrices or for all matrices of size of A. The corresponding commutation matrix (see here) can be generated as Matrix(M).

source
MatrixEquations.eliminationopType
M = eliminationop(n)
M = eliminationop(A)

Define the elimination operator of all n×n matrices to select their upper triangular parts or of all square matrices of size of A. See here for the definition of an elimination matrix for the selection of lower triangular parts.

source
MatrixEquations.duplicationopType
M = duplicationop(n)
M = duplicationop(A)

Define the duplication operator of all n×n matrices to reconstruct a hermitian matrix from its upper triangular elements or of all square matrices of size of A. See here for the definition of a duplication matrix from the lower triangular parts.

source