Purpose
To compute the matrices of the H2 optimal discrete-time controller
| AK | BK |
K = |----|----|,
| CK | DK |
from the matrices of the controller for the normalized system,
as determined by the SLICOT Library routine SB10SD.
Specification
SUBROUTINE SB10TD( N, M, NP, NCON, NMEAS, D, LDD, TU, LDTU, TY,
$ LDTY, AK, LDAK, BK, LDBK, CK, LDCK, DK, LDDK,
$ RCOND, TOL, IWORK, DWORK, LDWORK, INFO )
C .. Scalar Arguments ..
INTEGER INFO, LDAK, LDBK, LDCK, LDD, LDDK, LDTU, LDTY,
$ LDWORK, M, N, NCON, NMEAS, NP
DOUBLE PRECISION RCOND, TOL
C .. Array Arguments ..
INTEGER IWORK( * )
DOUBLE PRECISION AK( LDAK, * ), BK( LDBK, * ), CK( LDCK, * ),
$ D( LDD, * ), DK( LDDK, * ), DWORK( * ),
$ TU( LDTU, * ), TY( LDTY, * )
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.
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. Only the trailing
NMEAS-by-NCON submatrix D22 is used.
LDD INTEGER
The leading dimension of the array D. LDD >= max(1,NP).
TU (input) DOUBLE PRECISION array, dimension (LDTU,M2)
The leading M2-by-M2 part of this array must contain the
control transformation matrix TU, as obtained by the
SLICOT Library routine SB10PD.
LDTU INTEGER
The leading dimension of the array TU. LDTU >= max(1,M2).
TY (input) DOUBLE PRECISION array, dimension (LDTY,NP2)
The leading NP2-by-NP2 part of this array must contain the
measurement transformation matrix TY, as obtained by the
SLICOT Library routine SB10PD.
LDTY INTEGER
The leading dimension of the array TY.
LDTY >= max(1,NP2).
AK (input/output) DOUBLE PRECISION array, dimension (LDAK,N)
On entry, the leading N-by-N part of this array must
contain controller state matrix for the normalized system
as obtained by the SLICOT Library routine SB10SD.
On exit, the leading N-by-N part of this array contains
controller state matrix AK.
LDAK INTEGER
The leading dimension of the array AK. LDAK >= max(1,N).
BK (input/output) DOUBLE PRECISION array, dimension
(LDBK,NMEAS)
On entry, the leading N-by-NMEAS part of this array must
contain controller input matrix for the normalized system
as obtained by the SLICOT Library routine SB10SD.
On exit, the leading N-by-NMEAS part of this array
contains controller input matrix BK.
LDBK INTEGER
The leading dimension of the array BK. LDBK >= max(1,N).
CK (input/output) DOUBLE PRECISION array, dimension (LDCK,N)
On entry, the leading NCON-by-N part of this array must
contain controller output matrix for the normalized
system as obtained by the SLICOT Library routine SB10SD.
On exit, the leading NCON-by-N part of this array contains
controller output matrix CK.
LDCK INTEGER
The leading dimension of the array CK.
LDCK >= max(1,NCON).
DK (input/output) DOUBLE PRECISION array, dimension
(LDDK,NMEAS)
On entry, the leading NCON-by-NMEAS part of this array
must contain controller matrix DK for the normalized
system as obtained by the SLICOT Library routine SB10SD.
On exit, the leading NCON-by-NMEAS part of this array
contains controller input/output matrix DK.
LDDK INTEGER
The leading dimension of the array DK.
LDDK >= max(1,NCON).
RCOND (output) DOUBLE PRECISION
RCOND contains an estimate of the reciprocal condition
number of the matrix Im2 + DKHAT*D22 which must be
inverted in the computation of the controller.
Tolerances
TOL DOUBLE PRECISION
Tolerance used in determining the nonsingularity of the
matrix which must be inverted. If TOL <= 0, then a default
value equal to sqrt(EPS) is used, where EPS is the
relative machine precision.
Workspace
IWORK INTEGER array, dimension (2*M2)
DWORK DOUBLE PRECISION array, dimension (LDWORK)
LDWORK INTEGER
The dimension of the array DWORK.
LDWORK >= max(N*M2,N*NP2,M2*NP2,M2*M2+4*M2).
Error Indicator
INFO INTEGER
= 0: successful exit;
< 0: if INFO = -i, the i-th argument had an illegal
value;
= 1: if the matrix Im2 + DKHAT*D22 is singular, or the
estimated condition number is larger than or equal
to 1/TOL.
Method
The routine implements the formulas given in [1].References
[1] Zhou, K., Doyle, J.C., and Glover, K.
Robust and Optimal Control.
Prentice-Hall, Upper Saddle River, NJ, 1996.
[2] Petkov, P.Hr., Gu, D.W., and Konstantinov, M.M.
Fortran 77 routines for Hinf and H2 design of linear
discrete-time control systems.
Report 99-8, Department of Engineering, Leicester University,
April 1999.
Numerical Aspects
The accuracy of the result depends on the condition numbers of the input and output transformations and of the matrix Im2 + DKHAT*D22.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None