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.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index