## SB16CY

### Cholesky factors of controllability and observability Grammians of coprime factors of a state-feedback controller

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

Purpose

      To compute, for a given open-loop model (A,B,C,0), and for
      given state feedback gain F and full observer gain G,
      such that A+B*F and A+G*C are stable, the Cholesky factors
      Su and Ru of a controllability Grammian P = Su*Su' and of
      an observability Grammian Q = Ru'*Ru corresponding to a
      frequency-weighted model reduction of the left or right coprime
      factors of the state-feedback controller.

Specification

          SUBROUTINE SB16CY( DICO, JOBCF, N, M, P, A, LDA, B, LDB, C, LDC,
         $                   F, LDF, G, LDG, SCALEC, SCALEO, S, LDS, R, LDR,
         $                   DWORK, LDWORK, INFO )
    C     .. Scalar Arguments ..
          CHARACTER        DICO, JOBCF
          INTEGER          INFO, LDA, LDB, LDC, LDF, LDG, LDR, LDS, LDWORK,
         $                 M, N, P
          DOUBLE PRECISION SCALEC, SCALEO
    C     .. Array Arguments ..
          DOUBLE PRECISION A(LDA,*), B(LDB,*), C(LDC,*), DWORK(*),
         $                 F(LDF,*), G(LDG,*), R(LDR,*), S(LDS,*)

Arguments

Mode Parameters

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

      JOBCF   CHARACTER*1
              Specifies whether a left or right coprime factorization
              of the state-feedback controller is to be used as follows:
              = 'L':  use a left coprime factorization;
              = 'R':  use a right coprime factorization.

Input/Output Parameters

      N       (input) INTEGER
              The order of the open-loop 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.

      A       (input) DOUBLE PRECISION array, dimension (LDA,N)
              The leading N-by-N part of this array must contain the
              state matrix A of the open-loop system.

      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 of the open-loop system.

      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 of the open-loop system.

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

      F       (input) DOUBLE PRECISION array, dimension (LDF,N)
              The leading M-by-N part of this array must contain a
              stabilizing state feedback matrix.

      LDF     INTEGER
              The leading dimension of array F.  LDF >= MAX(1,M).

      G       (input) DOUBLE PRECISION array, dimension (LDG,P)
              The leading N-by-P part of this array must contain a
              stabilizing observer gain matrix.

      LDG     INTEGER
              The leading dimension of array G.  LDG >= MAX(1,N).

      SCALEC  (output) DOUBLE PRECISION
              Scaling factor for the controllability Grammian.
              See METHOD.

      SCALEO  (output) DOUBLE PRECISION
              Scaling factor for the observability Grammian.
              See METHOD.

      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 frequency-weighted
              cotrollability Grammian P = Su*Su'. See METHOD.

      LDS     INTEGER
              The leading dimension of the 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 frequency-weighted
              observability Grammian Q = Ru'*Ru. See METHOD.

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

Workspace

      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, N*(N + MAX(N,M) + MIN(N,M) + 6)),
                                                        if JOBCF = 'L';
              LDWORK >= MAX(1, N*(N + MAX(N,P) + MIN(N,P) + 6)),
                                                        if JOBCF = 'R'.
              For optimum performance LDWORK should be larger.
              An upper bound for both cases is
              LDWORK >= MAX(1, N*(N + MAX(N,M,P) + 7)).

Error Indicator

      INFO    INTEGER
              = 0:  successful exit;
              < 0:  if INFO = -i, the i-th argument had an illegal
                    value;
              = 1:  eigenvalue computation failure;
              = 2:  the matrix A+G*C is not stable;
              = 3:  the matrix A+B*F is not stable;
              = 4:  the Lyapunov equation for computing the
                    observability Grammian is (nearly) singular;
              = 5:  the Lyapunov equation for computing the
                    controllability Grammian is (nearly) singular.

Method

      In accordance with the type of the coprime factorization
      of the controller (left or right), the Cholesky factors Su and Ru
      of the frequency-weighted controllability Grammian P = Su*Su' and
      of the frequency-weighted observability Grammian Q = Ru'*Ru are
      computed by solving appropriate Lyapunov or Stein equations [1].

      If JOBCF = 'L' and DICO = 'C', P and Q are computed as the
      solutions of the following Lyapunov equations:

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

             (A+G*C)'*Q + Q*(A+G*C) +  scaleo^2*F'*F = 0.  (2)

      If JOBCF = 'L' and DICO = 'D', P and Q are computed as the
      solutions of the following Stein equations:

             (A+B*F)*P*(A+B*F)' - P +  scalec^2*B*B' = 0,  (3)

             (A+G*C)'*Q*(A+G*C) - Q +  scaleo^2*F'*F = 0.  (4)

      If JOBCF = 'R' and DICO = 'C', P and Q are computed as the
      solutions of the following Lyapunov equations:

             (A+B*F)*P + P*(A+B*F)' +  scalec^2*G*G' = 0,  (5)

             (A+G*C)'*Q + Q*(A+G*C) +  scaleo^2*C'*C = 0.  (6)

      If JOBCF = 'R' and DICO = 'D', P and Q are computed as the
      solutions of the following Stein equations:

             (A+B*F)*P*(A+B*F)' - P +  scalec^2*G*G' = 0,  (7)

             (A+G*C)'*Q*(A+G*C) - Q +  scaleo^2*C'*C = 0.  (8)

References

      [1] Liu, Y., Anderson, B.D.O. and Ly, O.L.
          Coprime factorization controller reduction with Bezout
          identity induced frequency weighting.
          Automatica, vol. 26, pp. 233-249, 1990.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index