## AB09IX

### Accuracy enhanced balancing related model reduction

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

Purpose

```  To compute a reduced order model (Ar,Br,Cr,Dr) for an original
state-space representation (A,B,C,D) by using the square-root or
balancing-free square-root Balance & Truncate (B&T) or
Singular Perturbation Approximation (SPA) model reduction methods.
The computation of truncation matrices TI and T is based on
the Cholesky factor S of a controllability Grammian P = S*S'
and the Cholesky factor R of an observability Grammian Q = R'*R,
where S and R are given upper triangular matrices.

For the B&T approach, the matrices of the reduced order system
are computed using the truncation formulas:

Ar = TI * A * T ,  Br = TI * B ,  Cr = C * T .     (1)

For the SPA approach, the matrices of a minimal realization
(Am,Bm,Cm) are computed using the truncation formulas:

Am = TI * A * T ,  Bm = TI * B ,  Cm = C * T .     (2)

Am, Bm, Cm and D serve further for computing the SPA of the given
system.

```
Specification
```      SUBROUTINE AB09IX( DICO, JOB, FACT, ORDSEL, N, M, P, NR,
\$                   SCALEC, SCALEO, A, LDA, B, LDB, C, LDC, D, LDD,
\$                   TI, LDTI, T, LDT, NMINR, HSV, TOL1, TOL2,
\$                   IWORK, DWORK, LDWORK, IWARN, INFO )
C     .. Scalar Arguments ..
CHARACTER         DICO, FACT, JOB, ORDSEL
INTEGER           INFO, IWARN, LDA, LDB, LDC, LDD, LDT, LDTI,
\$                  LDWORK, M, N, NMINR, NR, P
DOUBLE PRECISION  SCALEC, SCALEO, TOL1, TOL2
C     .. Array Arguments ..
INTEGER           IWORK(*)
DOUBLE PRECISION  A(LDA,*), B(LDB,*), C(LDC,*), D(LDD,*),
\$                  DWORK(*), HSV(*), T(LDT,*), TI(LDTI,*)

```
Arguments

Mode Parameters

```  DICO    CHARACTER*1
Specifies the type of the original system as follows:
= 'C':  continuous-time system;
= 'D':  discrete-time system.

JOB     CHARACTER*1
Specifies the model reduction approach to be used
as follows:
= 'B':  use the square-root B&T method;
= 'F':  use the balancing-free square-root B&T method;
= 'S':  use the square-root SPA method;
= 'P':  use the balancing-free square-root SPA method.

FACT    CHARACTER*1
Specifies whether or not, on entry, the matrix A is in a
real Schur form, as follows:
= 'S':  A is in a real Schur form;
= 'N':  A is a general dense square matrix.

ORDSEL  CHARACTER*1
Specifies the order selection method as follows:
= 'F':  the resulting order NR is fixed;
= 'A':  the resulting order NR is automatically determined
on basis of the given tolerance TOL1.

```
Input/Output Parameters
```  N       (input) INTEGER
The order of the original 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.  P >= 0.

NR      (input/output) INTEGER
On entry with ORDSEL = 'F', NR is the desired order of
the resulting reduced order system.  0 <= NR <= N.
On exit, if INFO = 0, NR is the order of the resulting
reduced order model. NR is set as follows:
if ORDSEL = 'F', NR is equal to MIN(NR,NMINR), where NR
is the desired order on entry and NMINR is the number of
the Hankel singular values greater than N*EPS*S1, where
EPS is the machine precision (see LAPACK Library Routine
DLAMCH) and S1 is the largest Hankel singular value
(computed in HSV(1));
NR can be further reduced to ensure HSV(NR) > HSV(NR+1);
if ORDSEL = 'A', NR is equal to the number of Hankel
singular values greater than MAX(TOL1,N*EPS*S1).

SCALEC  (input) DOUBLE PRECISION
Scaling factor for the Cholesky factor S of the
controllability Grammian, i.e., S/SCALEC is used to
compute the Hankel singular values.  SCALEC > 0.

SCALEO  (input) DOUBLE PRECISION
Scaling factor for the Cholesky factor R of the
observability Grammian, i.e., R/SCALEO is used to
compute the Hankel singular values.  SCALEO > 0.

A       (input/output) DOUBLE PRECISION array, dimension (LDA,N)
On entry, the leading N-by-N part of this array must
contain the state dynamics matrix A. If FACT = 'S',
A is in a real Schur form.
On exit, if INFO = 0, the leading NR-by-NR part of this
array contains the state dynamics matrix Ar of the
reduced order system.

LDA     INTEGER
The leading dimension of array A.  LDA >= MAX(1,N).

B       (input/output) DOUBLE PRECISION array, dimension (LDB,M)
On entry, the leading N-by-M part of this array must
contain the original input/state matrix B.
On exit, if INFO = 0, the leading NR-by-M part of this
array contains the input/state matrix Br of the reduced
order system.

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

C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
On entry, the leading P-by-N part of this array must
contain the original state/output matrix C.
On exit, if INFO = 0, the leading P-by-NR part of this
array contains the state/output matrix Cr of the reduced
order system.

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

D       (input/output) DOUBLE PRECISION array, dimension (LDD,M)
On entry, if JOB = 'S' or JOB = 'P', the leading P-by-M
part of this array must contain the original input/output
matrix D.
On exit, if INFO = 0 and JOB = 'S' or JOB = 'P', the
leading P-by-M part of this array contains the
input/output matrix Dr of the reduced order system.
If JOB = 'B' or JOB = 'F', this array is not referenced.

LDD     INTEGER
The leading dimension of array D.
LDD >= 1,        if JOB = 'B' or JOB = 'F';
LDD >= MAX(1,P), if JOB = 'S' or JOB = 'P'.

TI      (input/output) DOUBLE PRECISION array, dimension (LDTI,N)
On entry, the leading N-by-N upper triangular part of
this array must contain the Cholesky factor S of a
controllability Grammian P = S*S'.
On exit, if INFO = 0, and NR > 0, the leading NMINR-by-N
part of this array contains the left truncation matrix
TI in (1), for the B&T approach, or in (2), for the
SPA approach.

LDTI    INTEGER
The leading dimension of array TI.  LDTI >= MAX(1,N).

T       (input/output) DOUBLE PRECISION array, dimension (LDT,N)
On entry, the leading N-by-N upper triangular part of
this array must contain the Cholesky factor R of an
observability Grammian Q = R'*R.
On exit, if INFO = 0, and NR > 0, the leading N-by-NMINR
part of this array contains the right truncation matrix
T in (1), for the B&T approach, or in (2), for the
SPA approach.

LDT     INTEGER
The leading dimension of array T.  LDT >= MAX(1,N).

NMINR   (output) INTEGER
The number of Hankel singular values greater than
MAX(TOL2,N*EPS*S1).
Note: If S and R are the Cholesky factors of the
controllability and observability Grammians of the
original system (A,B,C,D), respectively, then NMINR is
the order of a minimal realization of the original system.

HSV     (output) DOUBLE PRECISION array, dimension (N)
If INFO = 0, it contains the Hankel singular values,
ordered decreasingly. The Hankel singular values are
singular values of the product R*S.

```
Tolerances
```  TOL1    DOUBLE PRECISION
If ORDSEL = 'A', TOL1 contains the tolerance for
determining the order of the reduced system.
For model reduction, the recommended value lies in the
interval [0.00001,0.001].
If TOL1 <= 0 on entry, the used default value is
TOL1 = N*EPS*S1, where EPS is the machine precision
(see LAPACK Library Routine DLAMCH) and S1 is the largest
Hankel singular value (computed in HSV(1)).
If ORDSEL = 'F', the value of TOL1 is ignored.

TOL2    DOUBLE PRECISION
The tolerance for determining the order of a minimal
realization of the system.
The recommended value is TOL2 = N*EPS*S1.
This value is used by default if TOL2 <= 0 on entry.
If TOL2 > 0, and ORDSEL = 'A', then TOL2 <= TOL1.

```
Workspace
```  IWORK   INTEGER array, dimension (LIWORK), where
LIWORK = 0,   if JOB = 'B';
LIWORK = N,   if JOB = 'F';
LIWORK = 2*N, if JOB = 'S' or 'P'.

DWORK   DOUBLE PRECISION array, dimension (LDWORK)
On exit, if INFO = 0, DWORK(1) returns the optimal value
of LDWORK.

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

```
Warning Indicator
```  IWARN   INTEGER
= 0:  no warning;
= 1:  with ORDSEL = 'F', the selected order NR is greater
than NMINR, the order of a minimal realization of
the given system; in this case, the resulting NR is
set automatically to NMINR;
= 2:  with ORDSEL = 'F', the selected order NR corresponds
to repeated singular values, which are neither all
included nor all excluded from the reduced model;
in this case, the resulting NR is set automatically
to the largest value such that HSV(NR) > HSV(NR+1).

```
Error Indicator
```  INFO    INTEGER
= 0:  successful exit;
< 0:  if INFO = -i, the i-th argument had an illegal
value;
= 1:  the computation of Hankel singular values failed.

```
Method
```  Let be the stable linear system

d[x(t)] = Ax(t) + Bu(t)
y(t)    = Cx(t) + Du(t),                             (3)

where d[x(t)] is dx(t)/dt for a continuous-time system and x(t+1)
for a discrete-time system. The subroutine AB09IX determines for
the given system (3), the matrices of a reduced NR order system

d[z(t)] = Ar*z(t) + Br*u(t)
yr(t)   = Cr*z(t) + Dr*u(t),                         (4)

by using the square-root or balancing-free square-root
Balance & Truncate (B&T) or Singular Perturbation Approximation
(SPA) model reduction methods.

The projection matrices TI and T are determined using the
Cholesky factors S and R of a controllability Grammian P and an
observability Grammian Q.
The Hankel singular values HSV(1), ...., HSV(N) are computed as
singular values of the product R*S.

If JOB = 'B', the square-root Balance & Truncate technique
of [1] is used.

If JOB = 'F', the balancing-free square-root version of the
Balance & Truncate technique [2] is used.

If JOB = 'S', the square-root version of the Singular Perturbation
Approximation method [3,4] is used.

If JOB = 'P', the balancing-free square-root version of the
Singular Perturbation Approximation method [3,4] is used.

```
References
```  [1] Tombs M.S. and Postlethwaite I.
Truncated balanced realization of stable, non-minimal
state-space systems.
Int. J. Control, Vol. 46, pp. 1319-1330, 1987.

[2] Varga A.
Efficient minimal realization procedure based on balancing.
Proc. of IMACS/IFAC Symp. MCTS, Lille, France, May 1991,
A. El Moudni, P. Borne, S. G. Tzafestas (Eds.),
Vol. 2, pp. 42-46.

[3] Liu Y. and Anderson B.D.O.
Singular Perturbation Approximation of balanced systems.
Int. J. Control, Vol. 50, pp. 1379-1405, 1989.

[4] Varga A.
Balancing-free square-root algorithm for computing singular
perturbation approximations.
Proc. 30-th CDC, Brighton, Dec. 11-13, 1991,
Vol. 2, pp. 1062-1065.

```
Numerical Aspects
```  The implemented method relies on accuracy enhancing square-root
or balancing-free square-root methods.

```
```  None
```
Example

Program Text

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