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
NoneProgram Data
NoneProgram Results
None