Purpose
To solve small periodic Sylvester-like equations (PSLE) op(A(i))*X( i ) + isgn*X(i+1)*op(B(i)) = -scale*C(i), S(i) = 1, op(A(i))*X(i+1) + isgn*X( i )*op(B(i)) = -scale*C(i), S(i) = -1. i = 1, ..., K, where op(A) means A or A**T, for the K-periodic matrix sequence X(i) = X(i+K), where A, B and C are K-periodic matrix sequences and A and B are in periodic real Schur form. The matrices A(i) are M-by-M and B(i) are N-by-N, with 1 <= M, N <= 2.Specification
SUBROUTINE MB03KE( TRANA, TRANB, ISGN, K, M, N, PREC, SMIN, S, A, $ B, C, SCALE, DWORK, LDWORK, INFO ) C .. Scalar Arguments .. LOGICAL TRANA, TRANB INTEGER INFO, ISGN, K, LDWORK, M, N DOUBLE PRECISION PREC, SCALE, SMIN C .. Array Arguments .. INTEGER S( * ) DOUBLE PRECISION A( * ), B( * ), C( * ), DWORK( * )Arguments
Mode Parameters
TRANA LOGICAL Specifies the form of op(A) to be used, as follows: = .FALSE.: op(A) = A, = .TRUE. : op(A) = A**T. TRANB LOGICAL Specifies the form of op(B) to be used, as follows: = .FALSE.: op(B) = B, = .TRUE. : op(B) = B**T. ISGN INTEGER Specifies which sign variant of the equations to solve. ISGN = 1 or ISGN = -1.Input/Output Parameters
K (input) INTEGER The period of the periodic matrix sequences A, B, C and X. K >= 2. (For K = 1, a standard Sylvester equation is obtained.) M (input) INTEGER The order of the matrices A(i) and the number of rows of the matrices C(i) and X(i), i = 1, ..., K. 1 <= M <= 2. N (input) INTEGER The order of the matrices B(i) and the number of columns of the matrices C(i) and X(i), i = 1, ..., K. 1 <= N <= 2. PREC (input) DOUBLE PRECISION The relative machine precision. See the LAPACK Library routine DLAMCH. SMIN (input) DOUBLE PRECISION The machine safe minimum divided by PREC. S (input) INTEGER array, dimension (K) The leading K elements of this array must contain the signatures (exponents) of the factors in the K-periodic matrix sequences for A and B. Each entry in S must be either 1 or -1. Notice that it is assumed that the same exponents are tied to both A and B on reduction to the periodic Schur form. A (input) DOUBLE PRECISION array, dimension (M*M*K) On entry, this array must contain the M-by-M matrices A(i), for i = 1, ..., K, stored with the leading dimension M. Matrix A(i) is stored starting at position M*M*(i-1)+1. B (input) DOUBLE PRECISION array, dimension (N*N*K) On entry, this array must contain the N-by-N matrices B(i), for i = 1, ..., K, stored with the leading dimension N. Matrix B(i) is stored starting at position N*N*(i-1)+1. C (input/output) DOUBLE PRECISION array, dimension (M*N*K) On entry, this array must contain the M-by-N matrices C(i), for i = 1, ..., K, stored with the leading dimension M. Matrix C(i) is stored starting at position M*N*(i-1)+1. On exit, the matrices C(i) are overwritten by the solution sequence X(i). SCALE (output) DOUBLE PRECISION The scale factor, scale, set less than or equal to 1 to avoid overflow in X.Workspace
DWORK DOUBLE PRECISION array, dimension (LDWORK) On exit, if INFO = 0, DWORK(1) returns the optimal LDWORK. On exit, if INFO = -21, DWORK(1) returns the minimum value of LDWORK. LDWORK INTEGER The dimension of the array DWORK. LDWORK >= (4*K-3) * (M*N)**2 + K * M*N. If LDWORK = -1 a workspace query is assumed; the routine only calculates the optimal size of the DWORK array, returns this value as the first entry of the DWORK array, and no error message is issued by XERBLA.Error Indicator
INFO INTEGER = 0: successful exit; < 0: if INFO = -21, then LDWORK is too small; appropriate value for LDWORK is returned in DWORK(1); the other arguments are not tested, for efficiency; = 1: the solution would overflow with scale = 1, so SCALE was set less than 1. This is a warning, not an error.Method
A version of the algorithm described in [1] is used. The routine uses a sparse Kronecker product representation Z of the PSLE and solves for X(i) from an associated linear system Z*x = c using structured (overlapping) variants of QR factorization and backward substitution.References
[1] Granat, R., Kagstrom, B. and Kressner, D. Computing periodic deflating subspaces associated with a specified set of eigenvalues. BIT Numerical Mathematics, vol. 47, 763-791, 2007.Numerical Aspects
The implemented method is numerically backward stable.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None