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
Click here to get a compressed (gzip) tar file containing the source code of the routine, the example program, data, documentation, and related files.
Return to index