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