TG01OA

Orthogonal equivalence transformation of a SISO descriptor system with E upper triangular, so that B becomes parallel to the first unit vector and E keeps its structure

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

Purpose

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

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

  with E upper triangular, a transformed system, (Q'*A*Z, Q'*E*Z,
  Q'*B, C*Z), via an orthogonal equivalence transformation, so that
  Q'*B has only the first element nonzero and Q'*E*Z remains upper
  triangular.

Specification
      SUBROUTINE TG01OA( JOBE, N, DCBA, LDDCBA, E, LDE, INFO )
C     .. Scalar Arguments ..
      CHARACTER         JOBE
      INTEGER           INFO, LDDCBA, LDE, N
C     .. Array Arguments ..
      DOUBLE PRECISION  DCBA(LDDCBA,*), E(LDE,*)

Arguments

Mode Parameters

  JOBE    CHARACTER*1
          Specifies whether E is an upper triangular or an identity
          matrix, as follows:
          = 'U':  The matrix E is an upper triangular 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) DOUBLE PRECISION 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 (N+1)-by-(N+1) part of this array
          contains the transformed matrices C*Z, Q'*B, and Q'*A*Z,
          replacing C, B, and A. The scalar D is unchanged.

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

  E       (input/output) DOUBLE PRECISION array, dimension (LDE,*)
          On entry, if JOBE = 'U', the leading N-by-N upper
          triangular part of this array must contain the upper
          triangular part of the descriptor matrix E. The lower
          triangular part under the first subdiagonal is not
          referenced.
          On exit, if JOBE = 'U', the leading N-by-N upper
          triangular part of this array contains the upper
          triangular part of the transformed descriptor matrix,
          Q'*E*Z.
          If JOBE = 'I', this array is not referenced.

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

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

Method
  Givens rotations are used to annihilate the last N-1 elements of B
  in reverse order, but preserve the form of E.

Numerical Aspects
  The algorithm is numerically backward stable.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index