## AG07BD

### Descriptor inverse of a state-space or descriptor representation

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

Purpose

      To compute the inverse (Ai-lambda*Ei,Bi,Ci,Di) of a given
      descriptor system (A-lambda*E,B,C,D).

Specification

          SUBROUTINE AG07BD( JOBE, N, M, A, LDA, E, LDE, B, LDB, C, LDC,
         $                   D, LDD, AI, LDAI, EI, LDEI, BI, LDBI, CI, LDCI,
         $                   DI, LDDI, INFO )
    C     .. Scalar Arguments ..
          CHARACTER          JOBE
          INTEGER            INFO, LDA, LDAI, LDB, LDBI, LDC, LDCI,
         $                   LDD, LDDI, LDE, LDEI, M, N
    C     .. Array Arguments ..
          DOUBLE PRECISION   A(LDA,*), AI(LDAI,*), B(LDB,*), BI(LDBI,*),
         $                   C(LDC,*), CI(LDCI,*), D(LDD,*), DI(LDDI,*),
         $                   E(LDE,*), EI(LDEI,*)

Arguments

Mode Parameters

      JOBE    CHARACTER*1
              Specifies whether E is a general square or an identity
              matrix as follows:
              = 'G':  E is a general square matrix;
              = 'I':  E is the identity matrix.

Input/Output Parameters

      N       (input) INTEGER
              The order of the square matrices A and E;
              also the number of rows of matrix B and the number of
              columns of matrix C.  N >= 0.

      M       (input) INTEGER
              The number of system inputs and outputs, i.e., the number
              of columns of matrices B and D and the number of rows of
              matrices C and D.  M >= 0.

      A       (input) DOUBLE PRECISION array, dimension (LDA,N)
              The leading N-by-N part of this array must contain the
              state matrix A of the original system.

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

      E       (input) DOUBLE PRECISION array, dimension (LDE,N)
              If JOBE = 'G', the leading N-by-N part of this array must
              contain the descriptor matrix E of the original system.
              If JOBE = 'I', then E is assumed to be the identity
              matrix and is not referenced.

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

      B       (input) DOUBLE PRECISION array, dimension (LDB,M)
              The leading N-by-M part of this array must contain the
              input matrix B of the original system.

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

      C       (input) DOUBLE PRECISION array, dimension (LDC,N)
              The leading M-by-N part of this array must contain the
              output matrix C of the original system.

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

      D       (input) DOUBLE PRECISION array, dimension (LDD,M)
              The leading M-by-M part of this array must contain the
              feedthrough matrix D of the original system.

      LDD     INTEGER
              The leading dimension of the array D.  LDD >= MAX(1,M).

      AI      (output) DOUBLE PRECISION array, dimension (LDAI,N+M)
              The leading (N+M)-by-(N+M) part of this array contains
              the state matrix Ai of the inverse system.
              If LDAI = LDA >= N+M, then AI and A can share the same
              storage locations.

      LDAI    INTEGER
              The leading dimension of the array AI.
              LDAI >= MAX(1,N+M).

      EI      (output) DOUBLE PRECISION array, dimension (LDEI,N+M)
              The leading (N+M)-by-(N+M) part of this array contains
              the descriptor matrix Ei of the inverse system.
              If LDEI = LDE >= N+M, then EI and E can share the same
              storage locations.

      LDEI    INTEGER
              The leading dimension of the array EI.
              LDEI >= MAX(1,N+M).

      BI      (output) DOUBLE PRECISION array, dimension (LDBI,M)
              The leading (N+M)-by-M part of this array contains
              the input matrix Bi of the inverse system.
              If LDBI = LDB >= N+M, then BI and B can share the same
              storage locations.

      LDBI    INTEGER
              The leading dimension of the array BI.
              LDBI >= MAX(1,N+M).

      CI      (output) DOUBLE PRECISION array, dimension (LDCI,N+M)
              The leading M-by-(N+M) part of this array contains
              the output matrix Ci of the inverse system.
              If LDCI = LDC, CI and C can share the same storage
              locations.

      LDCI    INTEGER
              The leading dimension of the array CI.  LDCI >= MAX(1,M).

      DI      (output) DOUBLE PRECISION array, dimension (LDDI,M)
              The leading M-by-M part of this array contains
              the feedthrough matrix Di = 0 of the inverse system.
              DI and D can share the same storage locations.

      LDDI    INTEGER
              The leading dimension of the array DI.  LDDI >= MAX(1,M).

Error Indicator

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

Method

      The matrices of the inverse system are computed with the formulas

                 ( E  0 )        ( A  B )         (  0 )
            Ei = (      ) , Ai = (      ) ,  Bi = (    ),
                 ( 0  0 )        ( C  D )         ( -I )

            Ci = ( 0  I ),  Di = 0.

Further Comments

      The routine does not perform an invertibility test. This check can
      be performed by using the SLICOT routines AB08NX or AG08BY.

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to index