## TB01VY

### Conversion of the output normal form to a state-space representation

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

Purpose

      To convert the linear discrete-time system given as its output
      normal form [1], with parameter vector THETA, into the state-space
      representation (A, B, C, D), with the initial state x0.

Specification

          SUBROUTINE TB01VY( APPLY, N, M, L, THETA, LTHETA, A, LDA, B, LDB,
         $                   C, LDC, D, LDD, X0, DWORK, LDWORK, INFO )
    C     .. Scalar Arguments ..
          CHARACTER         APPLY
          INTEGER           INFO, L, LDA, LDB, LDC, LDD, LDWORK, LTHETA, M,
         $                  N
    C     .. Array Arguments ..
          DOUBLE PRECISION  A(LDA,*), B(LDB,*), C(LDC,*), D(LDD,*),
         $                  DWORK(*), THETA(*), X0(*)

Arguments

Mode Parameters

      APPLY   CHARACTER*1
              Specifies whether or not the parameter vector should be
              transformed using a bijective mapping, as follows:
              = 'A' : apply the bijective mapping to the N vectors in
                      THETA corresponding to the matrices A and C;
              = 'N' : do not apply the bijective mapping.
              The transformation performed when APPLY = 'A' allows
              to get rid of the constraints norm(THETAi) < 1, i = 1:N.
              A call of the SLICOT Library routine TB01VD associated to
              a call of TB01VY must use the same value of APPLY.

Input/Output Parameters

      N       (input) INTEGER
              The order of the system.  N >= 0.

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

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

      THETA   (input) DOUBLE PRECISION array, dimension (LTHETA)
              The leading N*(L+M+1)+L*M part of this array must contain
              the parameter vector that defines a system (A, B, C, D),
              with the initial state x0. The parameters are:

              THETA(1:N*L)                      : parameters for A, C;
              THETA(N*L+1:N*(L+M))              : parameters for B;
              THETA(N*(L+M)+1:N*(L+M)+L*M)      : parameters for D;
              THETA(N*(L+M)+L*M+1:N*(L+M+1)+L*M): parameters for x0.

      LTHETA  INTEGER
              The length of array THETA.  LTHETA >= N*(L+M+1)+L*M.

      A       (output) DOUBLE PRECISION array, dimension (LDA,N)
              The leading N-by-N part of this array contains the system
              state matrix corresponding to the output normal form with
              parameter vector THETA.

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

      B       (output) DOUBLE PRECISION array, dimension (LDB,M)
              The leading N-by-M part of this array contains the system
              input matrix corresponding to the output normal form with
              parameter vector THETA.

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

      C       (output) DOUBLE PRECISION array, dimension (LDC,N)
              The leading L-by-N part of this array contains the system
              output matrix corresponding to the output normal form with
              parameter vector THETA.

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

      D       (output) DOUBLE PRECISION array, dimension (LDD,M)
              The leading L-by-M part of this array contains the system
              input/output matrix corresponding to the output normal
              form with parameter vector THETA.

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

      X0      (output) DOUBLE PRECISION array, dimension (N)
              This array contains the initial state of the system, x0,
              corresponding to the output normal form with parameter
              vector THETA.

Workspace

      DWORK   DOUBLE PRECISION array, dimension (LDWORK)

      LDWORK  INTEGER
              The length of the array DWORK.
              LDWORK >= N*(N+L+1).

Error Indicator

      INFO    INTEGER
              = 0:  successful exit;
              < 0:  if INFO = -i, the i-th argument had an illegal
                    value.

Method

      The parameters characterizing A and C are used to build N
      orthogonal transformations, which are then applied to recover
      these matrices.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index