## SB10LD

### Closed-loop system matrices for a system with robust controller

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

Purpose

      To compute the matrices of the closed-loop system

               | AC | BC |
           G = |----|----|,
               | CC | DC |

      from the matrices of the open-loop system

                | A | B |
            P = |---|---|
                | C | D |

      and the matrices of the controller

               | AK | BK |
           K = |----|----|.
               | CK | DK |

Specification

          SUBROUTINE SB10LD( N, M, NP, NCON, NMEAS, A, LDA, B, LDB, C, LDC,
         $                   D, LDD, AK, LDAK, BK, LDBK, CK, LDCK, DK, LDDK,
         $                   AC, LDAC, BC, LDBC, CC, LDCC, DC, LDDC, IWORK,
         $                   DWORK, LDWORK, INFO )
    C     .. Scalar Arguments ..
          INTEGER            INFO, LDA, LDAC, LDAK, LDB, LDBC, LDBK, LDC,
         $                   LDCC, LDCK, LDD, LDDC, LDDK, LDWORK, M, N,
         $                   NCON, NMEAS, NP
    C     .. Array Arguments ..
          INTEGER            IWORK( * )
          DOUBLE PRECISION   A( LDA, * ), AC( LDAC, * ), AK( LDAK, * ),
         $                   B( LDB, * ), BC( LDBC, * ), BK( LDBK, * ),
         $                   C( LDC, * ), CC( LDCC, * ), CK( LDCK, * ),
         $                   D( LDD, * ), DC( LDDC, * ), DK( LDDK, * ),
         $                   DWORK( * )

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.

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

      LDA     INTEGER
              The leading dimension of the 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
              system input matrix B.

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

      C       (input) DOUBLE PRECISION array, dimension (LDC,N)
              The leading NP-by-N part of this array must contain the
              system output matrix C.

      LDC     INTEGER
              The leading dimension of the array C.  LDC >= max(1,NP).

      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.

      LDD     INTEGER
              The leading dimension of the array D.  LDD >= max(1,NP).

      AK      (input) DOUBLE PRECISION array, dimension (LDAK,N)
              The leading N-by-N part of this array must contain the
              controller state matrix AK.

      LDAK    INTEGER
              The leading dimension of the array AK.  LDAK >= max(1,N).

      BK      (input) DOUBLE PRECISION array, dimension (LDBK,NMEAS)
              The leading N-by-NMEAS part of this array must contain the
              controller input matrix BK.

      LDBK    INTEGER
              The leading dimension of the array BK.  LDBK >= max(1,N).

      CK      (input) DOUBLE PRECISION array, dimension (LDCK,N)
              The leading NCON-by-N part of this array must contain the
              controller output matrix CK.

      LDCK    INTEGER
              The leading dimension of the array CK.
              LDCK >= max(1,NCON).

      DK      (input) DOUBLE PRECISION array, dimension (LDDK,NMEAS)
              The leading NCON-by-NMEAS part of this array must contain
              the controller input/output matrix DK.

      LDDK    INTEGER
              The leading dimension of the array DK.
              LDDK >= max(1,NCON).

      AC      (output) DOUBLE PRECISION array, dimension (LDAC,2*N)
              The leading 2*N-by-2*N part of this array contains the
              closed-loop system state matrix AC.

      LDAC    INTEGER
              The leading dimension of the array AC.
              LDAC >= max(1,2*N).

      BC      (output) DOUBLE PRECISION array, dimension (LDBC,M-NCON)
              The leading 2*N-by-(M-NCON) part of this array contains
              the closed-loop system input matrix BC.

      LDBC    INTEGER
              The leading dimension of the array BC.
              LDBC >= max(1,2*N).

      CC      (output) DOUBLE PRECISION array, dimension (LDCC,2*N)
              The leading (NP-NMEAS)-by-2*N part of this array contains
              the closed-loop system output matrix CC.

      LDCC    INTEGER
              The leading dimension of the array CC.
              LDCC >= max(1,NP-NMEAS).

      DC      (output) DOUBLE PRECISION array, dimension (LDDC,M-NCON)
              The leading (NP-NMEAS)-by-(M-NCON) part of this array
              contains the closed-loop system input/output matrix DC.

      LDDC    INTEGER
              The leading dimension of the array DC.
              LDDC >= max(1,NP-NMEAS).

Workspace

      IWORK   INTEGER array, dimension (2*max(NCON,NMEAS))

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

      LDWORK  INTEGER
              The dimension of the array DWORK.
              LDWORK >= 2*M*M+NP*NP+2*M*N+M*NP+2*N*NP.
              For good performance, LDWORK must generally be larger.

      Error Indicactor

      INFO    INTEGER
              = 0:  successful exit;
              < 0:  if INFO = -i, the i-th argument had an illegal
                    value;
              = 1:  if the matrix Inp2 - D22*DK is singular to working
                    precision;
              = 2:  if the matrix Im2 - DK*D22 is singular to working
                    precision.

Method

      The routine implements the formulas given in [1].

References

      [1] Balas, G.J., Doyle, J.C., Glover, K., Packard, A., and
          Smith, R.
          mu-Analysis and Synthesis Toolbox.
          The MathWorks Inc., Natick, Mass., 1995.

Numerical Aspects

      The accuracy of the result depends on the condition numbers of the
      matrices  Inp2 - D22*DK  and  Im2 - DK*D22.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index