Purpose
To compute the matrices of the closed-loop system
| AC | BC |
G = |----|----|,
| CC | DC |
from the matrices of the open-loop system
| A | B |
P = |---|---|
| C | D |
and the matrices of the controller
| AK | BK |
K = |----|----|.
| CK | DK |
Specification
SUBROUTINE SB10LD( N, M, NP, NCON, NMEAS, A, LDA, B, LDB, C, LDC,
$ D, LDD, AK, LDAK, BK, LDBK, CK, LDCK, DK, LDDK,
$ AC, LDAC, BC, LDBC, CC, LDCC, DC, LDDC, IWORK,
$ DWORK, LDWORK, INFO )
C .. Scalar Arguments ..
INTEGER INFO, LDA, LDAC, LDAK, LDB, LDBC, LDBK, LDC,
$ LDCC, LDCK, LDD, LDDC, LDDK, LDWORK, M, N,
$ NCON, NMEAS, NP
C .. Array Arguments ..
INTEGER IWORK( * )
DOUBLE PRECISION A( LDA, * ), AC( LDAC, * ), AK( LDAK, * ),
$ B( LDB, * ), BC( LDBC, * ), BK( LDBK, * ),
$ C( LDC, * ), CC( LDCC, * ), CK( LDCK, * ),
$ D( LDD, * ), DC( LDDC, * ), DK( LDDK, * ),
$ DWORK( * )
Arguments
Input/Output Parameters
N (input) INTEGER
The order of the system. N >= 0.
M (input) INTEGER
The column size of the matrix B. M >= 0.
NP (input) INTEGER
The row size of the matrix C. NP >= 0.
NCON (input) INTEGER
The number of control inputs (M2). M >= NCON >= 0.
NP-NMEAS >= NCON.
NMEAS (input) INTEGER
The number of measurements (NP2). NP >= NMEAS >= 0.
M-NCON >= NMEAS.
A (input) DOUBLE PRECISION array, dimension (LDA,N)
The leading N-by-N part of this array must contain the
system state matrix A.
LDA INTEGER
The leading dimension of the array A. LDA >= max(1,N).
B (input) DOUBLE PRECISION array, dimension (LDB,M)
The leading N-by-M part of this array must contain the
system input matrix B.
LDB INTEGER
The leading dimension of the array B. LDB >= max(1,N).
C (input) DOUBLE PRECISION array, dimension (LDC,N)
The leading NP-by-N part of this array must contain the
system output matrix C.
LDC INTEGER
The leading dimension of the array C. LDC >= max(1,NP).
D (input) DOUBLE PRECISION array, dimension (LDD,M)
The leading NP-by-M part of this array must contain the
system input/output matrix D.
LDD INTEGER
The leading dimension of the array D. LDD >= max(1,NP).
AK (input) DOUBLE PRECISION array, dimension (LDAK,N)
The leading N-by-N part of this array must contain the
controller state matrix AK.
LDAK INTEGER
The leading dimension of the array AK. LDAK >= max(1,N).
BK (input) DOUBLE PRECISION array, dimension (LDBK,NMEAS)
The leading N-by-NMEAS part of this array must contain the
controller input matrix BK.
LDBK INTEGER
The leading dimension of the array BK. LDBK >= max(1,N).
CK (input) DOUBLE PRECISION array, dimension (LDCK,N)
The leading NCON-by-N part of this array must contain the
controller output matrix CK.
LDCK INTEGER
The leading dimension of the array CK.
LDCK >= max(1,NCON).
DK (input) DOUBLE PRECISION array, dimension (LDDK,NMEAS)
The leading NCON-by-NMEAS part of this array must contain
the controller input/output matrix DK.
LDDK INTEGER
The leading dimension of the array DK.
LDDK >= max(1,NCON).
AC (output) DOUBLE PRECISION array, dimension (LDAC,2*N)
The leading 2*N-by-2*N part of this array contains the
closed-loop system state matrix AC.
LDAC INTEGER
The leading dimension of the array AC.
LDAC >= max(1,2*N).
BC (output) DOUBLE PRECISION array, dimension (LDBC,M-NCON)
The leading 2*N-by-(M-NCON) part of this array contains
the closed-loop system input matrix BC.
LDBC INTEGER
The leading dimension of the array BC.
LDBC >= max(1,2*N).
CC (output) DOUBLE PRECISION array, dimension (LDCC,2*N)
The leading (NP-NMEAS)-by-2*N part of this array contains
the closed-loop system output matrix CC.
LDCC INTEGER
The leading dimension of the array CC.
LDCC >= max(1,NP-NMEAS).
DC (output) DOUBLE PRECISION array, dimension (LDDC,M-NCON)
The leading (NP-NMEAS)-by-(M-NCON) part of this array
contains the closed-loop system input/output matrix DC.
LDDC INTEGER
The leading dimension of the array DC.
LDDC >= max(1,NP-NMEAS).
Workspace
IWORK INTEGER array, dimension (2*max(NCON,NMEAS))
DWORK DOUBLE PRECISION array, dimension (LDWORK)
On exit, if INFO = 0, DWORK(1) contains the optimal
LDWORK.
LDWORK INTEGER
The dimension of the array DWORK.
LDWORK >= 2*M*M+NP*NP+2*M*N+M*NP+2*N*NP.
For good performance, LDWORK must generally be larger.
Error Indicactor
INFO INTEGER
= 0: successful exit;
< 0: if INFO = -i, the i-th argument had an illegal
value;
= 1: if the matrix Inp2 - D22*DK is singular to working
precision;
= 2: if the matrix Im2 - DK*D22 is singular to working
precision.
Method
The routine implements the formulas given in [1].References
[1] Balas, G.J., Doyle, J.C., Glover, K., Packard, A., and
Smith, R.
mu-Analysis and Synthesis Toolbox.
The MathWorks Inc., Natick, Mass., 1995.
Numerical Aspects
The accuracy of the result depends on the condition numbers of the matrices Inp2 - D22*DK and Im2 - DK*D22.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None