AB8NXZ

Construction of a reduced system (Ar,Br,Cr,Dr), having the same transmission zeros as (A,B,C,D), but with Dr of full row rank (complex case)

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

Purpose

  To extract from the (N+P)-by-(M+N) system
               ( B  A )
               ( D  C )
  an (NU+MU)-by-(M+NU) "reduced" system
               ( B' A')
               ( D' C')
  having the same transmission zeros but with D' of full row rank.

Specification
      SUBROUTINE AB8NXZ( N, M, P, RO, SIGMA, SVLMAX, ABCD, LDABCD,
     $                   NINFZ, INFZ, KRONL, MU, NU, NKROL, TOL, IWORK,
     $                   DWORK, ZWORK, LZWORK, INFO )
C     .. Scalar Arguments ..
      INTEGER           INFO, LDABCD, LZWORK, M, MU, N, NINFZ, NKROL,
     $                  NU, P, RO, SIGMA
      DOUBLE PRECISION  SVLMAX, TOL
C     .. Array Arguments ..
      INTEGER           INFZ(*), IWORK(*), KRONL(*)
      COMPLEX*16        ABCD(LDABCD,*), ZWORK(*)
      DOUBLE PRECISION  DWORK(*)

Arguments

Input/Output Parameters

  N       (input) INTEGER
          The number of state variables.  N >= 0.

  M       (input) INTEGER
          The number of system inputs.  M >= 0.

  P       (input) INTEGER
          The number of system outputs.  P >= 0.

  RO      (input/output) INTEGER
          On entry,
          = P     for the original system;
          = MAX(P-M, 0) for the pertransposed system.
          On exit, RO contains the last computed rank.

  SIGMA   (input/output) INTEGER
          On entry,
          = 0  for the original system;
          = M  for the pertransposed system.
          On exit, SIGMA contains the last computed value sigma in
          the algorithm.

  SVLMAX  (input) DOUBLE PRECISION
          During each reduction step, the rank-revealing QR
          factorization of a matrix stops when the estimated minimum
          singular value is smaller than TOL * MAX(SVLMAX,EMSV),
          where EMSV is the estimated maximum singular value.
          SVLMAX >= 0.

  ABCD    (input/output) COMPLEX*16 array, dimension (LDABCD,M+N)
          On entry, the leading (N+P)-by-(M+N) part of this array
          must contain the compound input matrix of the system.
          On exit, the leading (NU+MU)-by-(M+NU) part of this array
          contains the reduced compound input matrix of the system.

  LDABCD  INTEGER
          The leading dimension of array ABCD.
          LDABCD >= MAX(1,N+P).

  NINFZ   (input/output) INTEGER
          On entry, the currently computed number of infinite zeros.
          It should be initialized to zero on the first call.
          NINFZ >= 0.
          On exit, the number of infinite zeros.

  INFZ    (input/output) INTEGER array, dimension (N)
          On entry, INFZ(i) must contain the current number of
          infinite zeros of degree i, where i = 1,2,...,N, found in
          the previous call(s) of the routine. It should be
          initialized to zero on the first call.
          On exit, INFZ(i) contains the number of infinite zeros of
          degree i, where i = 1,2,...,N.

  KRONL   (input/output) INTEGER array, dimension (N+1)
          On entry, this array must contain the currently computed
          left Kronecker (row) indices found in the previous call(s)
          of the routine. It should be initialized to zero on the
          first call.
          On exit, the leading NKROL elements of this array contain
          the left Kronecker (row) indices.

  MU      (output) INTEGER
          The normal rank of the transfer function matrix of the
          original system.

  NU      (output) INTEGER
          The dimension of the reduced system matrix and the number
          of (finite) invariant zeros if D' is invertible.

  NKROL   (output) INTEGER
          The number of left Kronecker indices.

Tolerances
  TOL     DOUBLE PRECISION
          A tolerance used in rank decisions to determine the
          effective rank, which is defined as the order of the
          largest leading (or trailing) triangular submatrix in the
          QR (or RQ) factorization with column (or row) pivoting
          whose estimated condition number is less than 1/TOL.
          NOTE that when SVLMAX > 0, the estimated ranks could be
          less than those defined above (see SVLMAX).

Workspace
  IWORK   INTEGER array, dimension (MAX(M,P))

  DWORK   DOUBLE PRECISION array, dimension (2*MAX(M,P))

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

  LZWORK  INTEGER
          The length of the array ZWORK.
          LZWORK >= MAX( 1, MIN(P,M) + MAX(3*M-1,N),
                            MIN(P,N) + MAX(3*P-1,N+P,N+M) ).
          For optimum performance LZWORK should be larger.

          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.

References
  [1] Svaricek, F.
      Computation of the Structural Invariants of Linear
      Multivariable Systems with an Extended Version of
      the Program ZEROS.
      System & Control Letters, 6, pp. 261-266, 1985.

  [2] Emami-Naeini, A. and Van Dooren, P.
      Computation of Zeros of Linear Multivariable Systems.
      Automatica, 18, pp. 415-430, 1982.

Numerical Aspects
  The algorithm is backward stable.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index