Linear Operators Related to Matrix Equation Solvers
Lyapunov and Lyapunov-like Operators
MatrixEquations.lyapop
— FunctionL = 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.
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.
MatrixEquations.invlyapop
— FunctionLINV = 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.
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.
MatrixEquations.lyaplikeop
— FunctionL = 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
.
MatrixEquations.tulyaplikeop
— FunctionL = 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
.
MatrixEquations.hulyaplikeop
— FunctionL = 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
.
Sylvester and Sylvester-like Operators
MatrixEquations.sylvop
— FunctionM = 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.
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.
MatrixEquations.invsylvop
— FunctionMINV = 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.
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.
MatrixEquations.gsylvop
— FunctionM = 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.
Sylvester System Operators
MatrixEquations.sylvsysop
— FunctionM = 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.
MatrixEquations.invsylvsysop
— FunctionMINV = 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.
Elementary Matrix Operators
MatrixEquations.trmatop
— TypeM = 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)
.
MatrixEquations.eliminationop
— TypeM = 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.
MatrixEquations.duplicationop
— TypeM = 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.