clyap {gclm} | R Documentation |
Solve continuous-time Lyapunov equations
Description
clyap
solve the continuous-time Lyapunov equations
BX + XB' + C=0
Using the Bartels-Stewart algorithm with Hessenberg–Schur decomposition. Optionally the Hessenberg-Schur decomposition can be returned.
Usage
clyap(B, C, Q = NULL, all = FALSE)
Arguments
B |
Square matrix |
C |
Square matrix |
Q |
Square matrix, the orthogonal matrix used to transform the original equation |
all |
logical |
Details
If the matrix Q
is set then the matrix B
is assumed to be in upper quasi-triangular form
(Hessenberg-Schur canonical form),
as required by LAPACK subroutine DTRSYL
and Q
is
the orthogonal matrix associated with the Hessenberg-Schur form
of B
.
Usually the matrix Q
and the appropriate form of B
are obtained by a first call to clyap(B, C, all = TRUE)
clyap
uses lapack subroutines:
-
DGEES
-
DTRSYL
-
DGEMM
Value
The solution matrix X
if all = FALSE
. If
all = TRUE
a list with components X
, B
and Q
. Where B
and Q
are the
Hessenberg-Schur form of the original matrix B
and the orthogonal matrix that performed the transformation.
Examples
B <- matrix(data = rnorm(9), nrow = 3)
## make B negative diagonally dominant, thus stable:
diag(B) <- - 3 * max(B)
C <- diag(runif(3))
X <- clyap(B, C)
## check X is a solution:
max(abs(B %*% X + X %*% t(B) + C))