## SB10TD

### H2 optimal controller matrices for a discrete-time system

[Specification] [Arguments] [Method] [References] [Comments] [Example]

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 .

```
References
```   Zhou, K., Doyle, J.C., and Glover, K.
Robust and Optimal Control.
Prentice-Hall, Upper Saddle River, NJ, 1996.

 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.

```
```  None
```
Example

Program Text

```  None
```
Program Data
```  None
```
Program Results
```  None
```