Purpose
To solve for X = op(U)**T * op(U) either the generalized c-stable continuous-time Lyapunov equation T T op(A) * X * op(E) + op(E) * X * op(A) 2 T = - SCALE * op(B) * op(B), (1) or the generalized d-stable discrete-time Lyapunov equation T T op(A) * X * op(A) - op(E) * X * op(E) 2 T = - SCALE * op(B) * op(B), (2) where op(K) is either K or K**T for K = A, B, E, U. The Cholesky factor U of the solution is computed without first finding X. Furthermore, the auxiliary matrices -1 -1 M1 := op(U) * op(A) * op(E) * op(U) -1 -1 M2 := op(B) * op(E) * op(U) are computed in a numerically reliable way. The matrices A, B, E, M1, M2, and U are real 2-by-2 matrices. The pencil A - lambda * E must have a pair of complex conjugate eigenvalues. The eigenvalues must be in the open right half plane (in the continuous-time case) or inside the unit circle (in the discrete-time case). The resulting matrix U is upper triangular. The entries on its main diagonal are non-negative. SCALE is an output scale factor set to avoid overflow in U.Specification
SUBROUTINE SG03BX( DICO, TRANS, A, LDA, E, LDE, B, LDB, U, LDU, $ SCALE, M1, LDM1, M2, LDM2, INFO ) C .. Scalar Arguments .. CHARACTER DICO, TRANS DOUBLE PRECISION SCALE INTEGER INFO, LDA, LDB, LDE, LDM1, LDM2, LDU C .. Array Arguments .. DOUBLE PRECISION A(LDA,*), B(LDB,*), E(LDE,*), M1(LDM1,*), $ M2(LDM2,*), U(LDU,*)Arguments
Mode Parameters
DICO CHARACTER*1 Specifies whether the continuous-time or the discrete-time equation is to be solved: = 'C': Solve continuous-time equation (1); = 'D': Solve discrete-time equation (2). TRANS CHARACTER*1 Specifies whether the transposed equation is to be solved or not: = 'N': op(K) = K, K = A, B, E, U; = 'T': op(K) = K**T, K = A, B, E, U.Input/Output Parameters
A (input) DOUBLE PRECISION array, dimension (LDA,2) The leading 2-by-2 part of this array must contain the matrix A. LDA INTEGER The leading dimension of the array A. LDA >= 2. E (input) DOUBLE PRECISION array, dimension (LDE,2) The leading 2-by-2 upper triangular part of this array must contain the matrix E. LDE INTEGER The leading dimension of the array E. LDE >= 2. B (input) DOUBLE PRECISION array, dimension (LDB,2) The leading 2-by-2 upper triangular part of this array must contain the matrix B. LDB INTEGER The leading dimension of the array B. LDB >= 2. U (output) DOUBLE PRECISION array, dimension (LDU,2) The leading 2-by-2 part of this array contains the upper triangular matrix U. LDU INTEGER The leading dimension of the array U. LDU >= 2. SCALE (output) DOUBLE PRECISION The scale factor set to avoid overflow in U. 0 < SCALE <= 1. M1 (output) DOUBLE PRECISION array, dimension (LDM1,2) The leading 2-by-2 part of this array contains the matrix M1. LDM1 INTEGER The leading dimension of the array M1. LDM1 >= 2. M2 (output) DOUBLE PRECISION array, dimension (LDM2,2) The leading 2-by-2 part of this array contains the matrix M2. LDM2 INTEGER The leading dimension of the array M2. LDM2 >= 2.Error Indicator
INFO INTEGER = 0: successful exit; = 2: the eigenvalues of the pencil A - lambda * E are not a pair of complex conjugate numbers; = 3: the eigenvalues of the pencil A - lambda * E are not in the open right half plane (in the continuous- time case) or inside the unit circle (in the discrete-time case).Method
The method used by the routine is based on a generalization of the method due to Hammarling ([1], section 6) for Lyapunov equations of order 2. A more detailed description is given in [2].References
[1] Hammarling, S.J. Numerical solution of the stable, non-negative definite Lyapunov equation. IMA J. Num. Anal., 2, pp. 303-323, 1982. [2] Penzl, T. Numerical solution of generalized Lyapunov equations. Advances in Comp. Math., vol. 8, pp. 33-48, 1998.Further Comments
If the solution matrix U is singular, the matrices M1 and M2 are properly set (see [1], equation (6.21)).Example
Program Text
NoneProgram Data
NoneProgram Results
None