TG01OZ

Reducing a complex SISO descriptor system with E nonsingular so that the obtained feedthrough term has a sufficiently large magnitude

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

Purpose

  To compute for a single-input single-output descriptor system,
  given by the system matrix with complex elements

     [ D     C    ]
     [ B  A - s*E ],

  with E nonsingular, a reduced system matrix,

     [ d     c    ]
     [ b  a - s*e ],

  such that d has a "sufficiently" large magnitude.

Specification
      SUBROUTINE TG01OZ( JOBE, N, DCBA, LDDCBA, E, LDE, NZ, G, TOL,
     $                   ZWORK, LZWORK, INFO )
C     .. Scalar Arguments ..
      CHARACTER         JOBE
      INTEGER           INFO, LDDCBA, LDE, LZWORK, N, NZ
      DOUBLE PRECISION  TOL
      COMPLEX*16        G
C     .. Array Arguments ..
      COMPLEX*16        DCBA(LDDCBA,*), E(LDE,*), ZWORK(*)

Arguments

Mode Parameters

  JOBE    CHARACTER*1
          Specifies whether E is a general or an identity matrix,
          as follows:
          = 'G':  The matrix E is a general matrix;
          = 'I':  The matrix E is assumed identity and is not given.

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

  DCBA    (input/output) COMPLEX*16 array, dimension (LDDCBA,N+1)
          On entry, the leading (N+1)-by-(N+1) part of this array
          must contain the original system matrices A, B, C, and D,
          stored as follows

             [ D  C ]
             [ B  A ].

          On exit, the leading (NZ+1)-by-(NZ+1) part of this array
          contains the reduced system matrices a, b, c, and d.

  LDDCBA  INTEGER
          The leading dimension of the array DCBA.  LDDCBA >= N+1.

  E       (input/output) COMPLEX*16 array, dimension (LDE,*)
          On entry, if JOBE = 'G', the leading N-by-N part of this
          array must contain the nonsingular descriptor matrix E.
          On exit, if JOBE = 'G', the leading NZ-by-NZ part of this
          array contains the reduced descriptor matrix e.
          If JOBE = 'I', this array is not referenced.

  LDE     INTEGER
          The leading dimension of the array E.
          LDE >= MAX(1,N), if JOBE = 'G';
          LDE >= 1,        if JOBE = 'I'.

  NZ      (output) INTEGER
          The order of the reduced system.

  G       (output) COMPLEX*16
          The gain of the reduced system.

Tolerances
  TOL     DOUBLE PRECISION
          The tolerance to be used in determining if the transformed
          d has a "sufficiently" large magnitude. If the user sets
          TOL > 0, then the given value of TOL is used. If the user
          sets TOL <= 0, then an implicitly computed, default
          tolerance, defined by TOLDEF = EPS**(3/4), is used
          instead, where EPS is the machine precision (see LAPACK
          Library routine DLAMCH).

Workspace
  ZWORK   COMPLEX*16 array, dimension (LZWORK)
          On exit, if INFO = 0, ZWORK(1) returns the optimal value
          of LZWORK.
          On exit, if INFO = -11, ZWORK(1) returns the minimum value
          of LZWORK.

  LZWORK  INTEGER
          The length of the array ZWORK.
          LZWORK >= 2*N+1,  if JOBE = 'G';
          LZWORK >=   N+1,  if JOBE = 'I'.
          For good performance when JOBE = 'G', LZWORK should be
          larger. Specifically,
             LZWORK >= MAX( N*NB(ZGEQRF), (N+1)*NB(ZUNMQR) ),
          where NB(X) is the optimal block sizes for the LAPACK
          Library routine X.

          If LZWORK = -1, then a workspace query is assumed;
          the routine only calculates the optimal size of the
          ZWORK array, returns this value as the first entry of
          the ZWORK array, and no error message related to LZWORK
          is issued by XERBLA.

Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          < 0:  if INFO = -i, the i-th argument had an illegal
                value.

Method
  Householder transformations and Givens rotations are used to
  process the matrices. If E is a general matrix, it is first
  triangularized using the QR decomposition, and the triangular form
  is preserved during the remaining computations.

Numerical Aspects
  The algorithm is numerically backward stable.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to index