## AB09HY

### Cholesky factors of the controllability and observability Grammians

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

Purpose

```  To compute the Cholesky factors Su and Ru of the controllability
Grammian P = Su*Su' and observability Grammian Q = Ru'*Ru,
respectively, satisfying

A*P  + P*A' +  scalec^2*B*B'   = 0,       (1)

A'*Q + Q*A  +  scaleo^2*Cw'*Cw = 0,       (2)

where
Cw = Hw - Bw'*X,
Hw = inv(Dw)*C,
Bw = (B*D' + P*C')*inv(Dw'),
D*D' = Dw*Dw' (Dw upper triangular),

and, with Aw = A - Bw*Hw, X is the stabilizing solution of the
Riccati equation

Aw'*X + X*Aw + Hw'*Hw + X*Bw*Bw'*X = 0.   (3)

The P-by-M matrix D must have full row rank. Matrix A must be
stable and in a real Schur form.

```
Specification
```      SUBROUTINE AB09HY( N, M, P, A, LDA, B, LDB, C, LDC, D, LDD,
\$                   SCALEC, SCALEO, S, LDS, R, LDR, IWORK,
\$                   DWORK, LDWORK, BWORK, INFO )
C     .. Scalar Arguments ..
INTEGER          INFO, LDA, LDB, LDC, LDD, LDR, LDS, LDWORK, M, N,
\$                 P
DOUBLE PRECISION SCALEC, SCALEO
C     .. Array Arguments ..
INTEGER          IWORK(*)
DOUBLE PRECISION A(LDA,*), B(LDB,*), C(LDC,*), D(LDD,*),
\$                 DWORK(*), R(LDR,*), S(LDS,*)
LOGICAL          BWORK(*)

```
Arguments

Input/Output Parameters

```  N       (input) INTEGER
The order of state-space representation, i.e.,
the order of the matrix A.  N >= 0.

M       (input) INTEGER
The number of system inputs.  M >= 0.

P       (input) INTEGER
The number of system outputs.  M >= P >= 0.

A       (input) DOUBLE PRECISION array, dimension (LDA,N)
The leading N-by-N part of this array must contain the
stable state dynamics matrix A in a real Schur canonical
form.

LDA     INTEGER
The leading dimension of 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
input/state matrix B, corresponding to the Schur matrix A.

LDB     INTEGER
The leading dimension of array B.  LDB >= MAX(1,N).

C       (input) DOUBLE PRECISION array, dimension (LDC,N)
The leading P-by-N part of this array must contain the
state/output matrix C, corresponding to the Schur
matrix A.

LDC     INTEGER
The leading dimension of array C.  LDC >= MAX(1,P).

D       (input) DOUBLE PRECISION array, dimension (LDD,M)
The leading P-by-M part of this array must
contain the full row rank input/output matrix D.

LDD     INTEGER
The leading dimension of array D.  LDD >= MAX(1,P).

SCALEC  (output) DOUBLE PRECISION
Scaling factor for the controllability Grammian in (1).

SCALEO  (output) DOUBLE PRECISION
Scaling factor for the observability Grammian in (2).

S       (output) DOUBLE PRECISION array, dimension (LDS,N)
The leading N-by-N upper triangular part of this array
contains the Cholesky factor Su of the cotrollability
Grammian P = Su*Su' satisfying (1).

LDS     INTEGER
The leading dimension of array S.  LDS >= MAX(1,N).

R       (output) DOUBLE PRECISION array, dimension (LDR,N)
The leading N-by-N upper triangular part of this array
contains the Cholesky factor Ru of the observability
Grammian Q = Ru'*Ru satisfying (2).

LDR     INTEGER
The leading dimension of array R.  LDR >= MAX(1,N).

```
Workspace
```  IWORK   INTEGER array, dimension (2*N)

DWORK   DOUBLE PRECISION array, dimension (LDWORK)
On exit, if INFO = 0, DWORK(1) returns the optimal value
of LDWORK and DWORK(2) contains RCOND, the reciprocal
condition number of the U11 matrix from the expression
used to compute X = U21*inv(U11). A small value RCOND
indicates possible ill-conditioning of the Riccati
equation (3).

LDWORK  INTEGER
The length of the array DWORK.
LDWORK >= MAX( 2, N*(MAX(N,M,P)+5),
2*N*P+MAX(P*(M+2),10*N*(N+1) ) ).
For optimum performance LDWORK should be larger.

BWORK   LOGICAL array, dimension 2*N

```
Error Indicator
```  INFO    INTEGER
= 0:  successful exit;
< 0:  if INFO = -i, the i-th argument had an illegal
value;
= 1:  the state matrix A is not stable or is not in a
real Schur form;
= 2:  the reduction of Hamiltonian matrix to real Schur
form failed;
= 3:  the reordering of the real Schur form of the
Hamiltonian matrix failed;
= 4:  the Hamiltonian matrix has less than N stable
eigenvalues;
= 5:  the coefficient matrix U11 in the linear system
X*U11 = U21, used to determine X, is singular to
working precision;
= 6:  the feedthrough matrix D has not a full row rank P.

```
```  None
```
Example

Program Text

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