| 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))