IB01ND

Singular value decomposition giving the system order

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

Purpose

  To find the singular value decomposition (SVD) giving the system
  order, using the triangular factor of the concatenated block
  Hankel matrices. Related preliminary calculations needed for
  computing the system matrices are also performed.

Specification
      SUBROUTINE IB01ND( METH, JOBD, NOBR, M, L, R, LDR, SV, TOL, IWORK,
     $                   DWORK, LDWORK, IWARN, INFO )
C     .. Scalar Arguments ..
      DOUBLE PRECISION   TOL
      INTEGER            INFO, IWARN, L, LDR, LDWORK, M, NOBR
      CHARACTER          JOBD, METH
C     .. Array Arguments ..
      DOUBLE PRECISION   DWORK(*), R(LDR, *), SV(*)
      INTEGER            IWORK(*)

Arguments

Mode Parameters

  METH    CHARACTER*1
          Specifies the subspace identification method to be used,
          as follows:
          = 'M':  MOESP  algorithm with past inputs and outputs;
          = 'N':  N4SID  algorithm.

  JOBD    CHARACTER*1
          Specifies whether or not the matrices B and D should later
          be computed using the MOESP approach, as follows:
          = 'M':  the matrices B and D should later be computed
                  using the MOESP approach;
          = 'N':  the matrices B and D should not be computed using
                  the MOESP approach.
          This parameter is not relevant for METH = 'N'.

Input/Output Parameters
  NOBR    (input) INTEGER
          The number of block rows,  s,  in the input and output
          block Hankel matrices.  NOBR > 0.

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

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

  R       (input/output) DOUBLE PRECISION array, dimension
          ( LDR,2*(M+L)*NOBR )
          On entry, the leading 2*(M+L)*NOBR-by-2*(M+L)*NOBR upper
          triangular part of this array must contain the upper
          triangular factor R from the QR factorization of the
          concatenated block Hankel matrices. Denote  R_ij,
          i,j = 1:4,  the ij submatrix of  R,  partitioned by
          M*NOBR,  M*NOBR,  L*NOBR,  and  L*NOBR  rows and columns.
          On exit, if INFO = 0, the leading
          2*(M+L)*NOBR-by-2*(M+L)*NOBR upper triangular part of this
          array contains the matrix S, the processed upper
          triangular factor R, as required by other subroutines.
          Specifically, let  S_ij, i,j = 1:4,  be the ij submatrix
          of  S,  partitioned by  M*NOBR,  L*NOBR,  M*NOBR,  and
          L*NOBR  rows and columns. The submatrix  S_22  contains
          the matrix of left singular vectors needed subsequently.
          Useful information is stored in  S_11  and in the
          block-column  S_14 : S_44.  For METH = 'M' and JOBD = 'M',
          the upper triangular part of  S_31  contains the upper
          triangular factor in the QR factorization of the matrix
          R_1c = [ R_12'  R_22'  R_11' ]',  and  S_12  contains the
          corresponding leading part of the transformed matrix
          R_2c = [ R_13'  R_23'  R_14' ]'.  For  METH = 'N',  the
          subarray  S_41 : S_43  contains the transpose of the
          matrix contained in  S_14 : S_34.

  LDR     INTEGER
          The leading dimension of the array  R.
          LDR >= MAX( 2*(M+L)*NOBR, 3*M*NOBR ),
                               for METH = 'M' and JOBD = 'M';
          LDR >= 2*(M+L)*NOBR, for METH = 'M' and JOBD = 'N' or
                               for METH = 'N'.

  SV      (output) DOUBLE PRECISION array, dimension ( L*NOBR )
          The singular values of the relevant part of the triangular
          factor from the QR factorization of the concatenated block
          Hankel matrices.

Tolerances
  TOL     DOUBLE PRECISION
          The tolerance to be used for estimating the rank of
          matrices. If the user sets  TOL > 0,  then the given value
          of  TOL  is used as a lower bound for the reciprocal
          condition number;  an m-by-n matrix whose estimated
          condition number is less than  1/TOL  is considered to
          be of full rank.  If the user sets  TOL <= 0,  then an
          implicitly computed, default tolerance, defined by
          TOLDEF = m*n*EPS,  is used instead, where  EPS  is the
          relative machine precision (see LAPACK Library routine
          DLAMCH).
          This parameter is not used for  METH = 'M'.

Workspace
  IWORK   INTEGER array, dimension ((M+L)*NOBR)
          This parameter is not referenced for METH = 'M'.

  DWORK   DOUBLE PRECISION array, dimension (LDWORK)
          On exit, if  INFO = 0,  DWORK(1) returns the optimal value
          of LDWORK,  and, for  METH = 'N',  DWORK(2)  and  DWORK(3)
          contain the reciprocal condition numbers of the
          triangular factors of the matrices  U_f  and  r_1  [6].
          On exit, if  INFO = -12,  DWORK(1)  returns the minimum
          value of LDWORK.

  LDWORK  INTEGER
          The length of the array DWORK.
          LDWORK >= max( (2*M-1)*NOBR, (M+L)*NOBR, 5*L*NOBR ),
                                      if METH = 'M' and JOBD = 'M';
          LDWORK >=  5*L*NOBR,        if METH = 'M' and JOBD = 'N';
          LDWORK >=  5*(M+L)*NOBR+1,  if METH = 'N'.
          For good performance,  LDWORK  should be larger.

Warning Indicator
  IWARN   INTEGER
          = 0:  no warning;
          = 4:  the least squares problems with coefficient matrix
                U_f,  used for computing the weighted oblique
                projection (for METH = 'N'), have a rank-deficient
                coefficient matrix;
          = 5:  the least squares problem with coefficient matrix
                r_1  [6], used for computing the weighted oblique
                projection (for METH = 'N'), has a rank-deficient
                coefficient matrix.

Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          < 0:  if INFO = -i, the i-th argument had an illegal
                value;
          = 2:  the singular value decomposition (SVD) algorithm did
                not converge.

Method
  A singular value decomposition (SVD) of a certain matrix is
  computed, which reveals the order  n  of the system as the number
  of "non-zero" singular values. For the MOESP approach, this matrix
  is  [ R_24'  R_34' ]' := R(ms+1:(2m+l)s,(2m+l)s+1:2(m+l)s),
  where  R  is the upper triangular factor  R  constructed by SLICOT
  Library routine  IB01MD.  For the N4SID approach, a weighted
  oblique projection is computed from the upper triangular factor  R
  and its SVD is then found.

References
  [1] Verhaegen M., and Dewilde, P.
      Subspace Model Identification. Part 1: The output-error
      state-space model identification class of algorithms.
      Int. J. Control, 56, pp. 1187-1210, 1992.

  [2] Verhaegen M.
      Subspace Model Identification. Part 3: Analysis of the
      ordinary output-error state-space model identification
      algorithm.
      Int. J. Control, 58, pp. 555-586, 1993.

  [3] Verhaegen M.
      Identification of the deterministic part of MIMO state space
      models given in innovations form from input-output data.
      Automatica, Vol.30, No.1, pp.61-74, 1994.

  [4] Van Overschee, P., and De Moor, B.
      N4SID: Subspace Algorithms for the Identification of
      Combined Deterministic-Stochastic Systems.
      Automatica, Vol.30, No.1, pp. 75-93, 1994.

  [5] Van Overschee, P., and De Moor, B.
      Subspace Identification for Linear Systems: Theory -
      Implementation - Applications.
      Kluwer Academic Publishers, Boston/London/Dordrecht, 1996.

  [6] Sima, V.
      Subspace-based Algorithms for Multivariable System
      Identification.
      Studies in Informatics and Control, 5, pp. 335-344, 1996.

Numerical Aspects
  The implemented method is numerically stable.
                                   3
  The algorithm requires 0(((m+l)s) ) floating point operations.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index