TG01NX

Block-diagonal decomposition of a descriptor system in generalized real Schur form

[Specification] [Arguments] [Method] [References] [Comments] [Example]

Purpose

  To compute equivalence transformation matrices Q and Z which
  reduce the regular pole pencil A-lambda*E of the descriptor system
  (A-lambda*E,B,C), with (A,E) in a generalized real Schur form, to
  the block-diagonal form

             ( A1  0  )             ( E1  0  )
     Q*A*Z = (        ) ,   Q*E*Z = (        ) ,                 (1)
             ( 0   A2 )             ( 0   E2 )

  where the pair (Q*A*Z,Q*E*Z) is in a generalized real Schur form,
  with (A1,E1) and (A2,E2) having no common generalized eigenvalues.
  This decomposition corresponds to an additive spectral
  decomposition of the transfer-function matrix of the descriptor
  system as the sum of two terms containing the generalized
  eigenvalues of (A1,E1) and (A2,E2), respectively.

Specification
      SUBROUTINE TG01NX( JOBT, N, M, P, NDIM, A, LDA, E, LDE, B, LDB,
     $                   C, LDC, Q, LDQ, Z, LDZ, IWORK, INFO )
C     .. Scalar Arguments ..
      CHARACTER          JOBT
      INTEGER            INFO, LDA, LDB, LDC, LDE, LDQ, LDZ, M, N, NDIM,
     $                   P
C     .. Array Arguments ..
      INTEGER            IWORK(*)
      DOUBLE PRECISION   A(LDA,*), B(LDB,*), C(LDC,*), E(LDE,*),
     $                   Q(LDQ,*), Z(LDZ,*)

Arguments

Mode Parameters

  JOBT    CHARACTER*1
          = 'D':  compute the direct transformation matrices;
          = 'I':  compute the inverse transformation matrices
                  inv(Q) and inv(Z).

Input/Output Parameters
  N       (input) INTEGER
          The number of rows of the matrix B, the number of columns
          of the matrix C and the order of the square matrices A
          and E.  N >= 0.

  M       (input) INTEGER
          The number of columns of the matrix B.  M >= 0.

  P       (input) INTEGER
          The number of rows of the matrix C.  P >= 0.

  NDIM    (input) INTEGER
          The dimension of the leading diagonal blocks of (A,E)
          having generalized eigenvalues distinct from those of the
          trailing diagonal block.  0 <= NDIM <= N.

  A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
          On entry, the leading N-by-N part of this array must
          contain the N-by-N state matrix A in a real Schur form.
          On exit, the leading N-by-N part of this array contains
          the transformed state matrix Q*A*Z (if JOBT = 'D') or
          inv(Q)*A*inv(Z) (if JOBT = 'I'), in the form (1), where
          A1 is a NDIM-by-NDIM matrix.

  LDA     INTEGER
          The leading dimension of the array A.  LDA >= MAX(1,N).

  E       (input/output) DOUBLE PRECISION array, dimension (LDE,N)
          On entry, the leading N-by-N part of this array must
          contain the N-by-N descriptor matrix E in upper triangular
          form.
          On exit, the leading N-by-N part of this array contains
          the transformed descriptor matrix Q*E*Z (if JOBT = 'D') or
          inv(Q)*E*inv(Z) (if JOBT = 'I'), in the form (1), where
          E1 is an NDIM-by-NDIM matrix.

  LDE     INTEGER
          The leading dimension of the array E.  LDE >= MAX(1,N).

  B       (input/output) DOUBLE PRECISION array, dimension (LDB,M)
          On entry, the leading N-by-M part of this array must
          contain the N-by-M input matrix B.
          On exit, the leading N-by-M part of this array contains
          the transformed input matrix Q*B (if JOBT = 'D') or
          inv(Q)*B (if JOBT = 'I').

  LDB     INTEGER
          The leading dimension of the array B.  LDB >= MAX(1,N).

  C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
          On entry, the leading P-by-N part of this array must
          contain the state/output matrix C.
          On exit, the leading P-by-N part of this array contains
          the transformed matrix C*Z (if JOBT = 'D') or C*inv(Z)
          (if JOBT = 'I').

  LDC     INTEGER
          The leading dimension of the array C.  LDC >= MAX(1,P).

  Q       (input/output) DOUBLE PRECISION array, dimension (LDQ,N)
          On entry, the leading N-by-N part of this array contains
          Q1, the orthogonal left transformation matrix Q used to
          reduce the pair (A,E) to the generalized real Schur form.
          On exit, the leading N-by-N part of this array contains
          the left transformation matrix Q = Q2*Q1, if JOBT = 'D',
          or its inverse inv(Q), if JOBT = 'I'.

  LDQ     INTEGER
          The leading dimension of the array Q.  LDQ >= MAX(1,N).

  Z       (input/output) DOUBLE PRECISION array, dimension (LDZ,N)
          On entry, the leading N-by-N part of this array contains
          the orthogonal right transformation matrix Z1 used to
          reduce the pair (A,E) to the generalized real Schur form.
          On exit, the leading N-by-N part of this array contains
          the right transformation matrix Z = Z1*Z2, if JOBT = 'D',
          or its inverse inv(Z), if JOBT = 'I'.

  LDZ     INTEGER
          The leading dimension of the array Z.  LDZ >= MAX(1,N).

Workspace
  IWORK   INTEGER array, dimension (N+6)

Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          < 0:  if INFO = -i, the i-th argument had an illegal
                value;
          = 1:  the separation of the two diagonal blocks failed
                because of very close eigenvalues.

Method
  For the separation, transformation matrices Q2 and Z2 of the form

          ( I -X )          ( I  Y )
     Q2 = (      ) ,   Z2 = (      )
          ( 0  I )          ( 0  I )

  are determined, such that Q2*A*Z2 and Q2*E*Z2 are block diagonal
  as in (1). X and Y are computed by solving generalized Sylvester
  equations.

  If we partition Q2*B and C*Z2 according to (1) in the form ( B1 )
                                                             ( B2 )
  and ( C1 C2 ), then (A1-lambda*E1,B1,C1) and (A2-lambda*E2,B2,C2)
  represent an additive spectral decomposition of the system
  transfer-function matrix.

References
  [1] Kagstrom, B. and Van Dooren, P.
      Additive decomposition of a transfer function with respect
      to a specified region.
      Proc. MTNS Symp., Brussels, 1989.

Numerical Aspects
  The algorithm is numerically backward stable and requires
  0( N**3 )  floating point operations.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index