## IB01OD

### Estimating the system order

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

Purpose

      To estimate the system order, based on the singular values of the
      relevant part of the triangular factor of the concatenated block
      Hankel matrices.

Specification

          SUBROUTINE IB01OD( CTRL, NOBR, L, SV, N, TOL, IWARN, INFO )
    C     .. Scalar Arguments ..
          DOUBLE PRECISION   TOL
          INTEGER            INFO, IWARN, L, N, NOBR
          CHARACTER          CTRL
    C     .. Array Arguments ..
          DOUBLE PRECISION   SV(*)

Arguments

Mode Parameters

      CTRL    CHARACTER*1
              Specifies whether or not the user's confirmation of the
              system order estimate is desired, as follows:
              = 'C':  user's confirmation;
              = 'N':  no confirmation.
              If  CTRL = 'C',  a reverse communication routine,  IB01OY,
              is called, and, after inspecting the singular values and
              system order estimate,  n,  the user may accept  n  or set
              a new value.
              IB01OY  is not called by the routine if CTRL = 'N'.

Input/Output Parameters

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

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

      SV      (input) 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.

      N       (output) INTEGER
              The estimated order of the system.

Tolerances

      TOL     DOUBLE PRECISION
              Absolute tolerance used for determining an estimate of
              the system order. If  TOL >= 0,  the estimate is
              indicated by the index of the last singular value greater
              than or equal to  TOL.  (Singular values less than  TOL
              are considered as zero.) When  TOL = 0,  an internally
              computed default value,  TOL = NOBR*EPS*SV(1),  is used,
              where  SV(1)  is the maximal singular value, and  EPS  is
              the relative machine precision (see LAPACK Library routine
              DLAMCH). When  TOL < 0,  the estimate is indicated by the
              index of the singular value that has the largest
              logarithmic gap to its successor.

Warning Indicator

      IWARN   INTEGER
              = 0:  no warning;
              = 3:  all singular values were exactly zero, hence  N = 0.
                    (Both input and output were identically zero.)

Error Indicator

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

Method

      The singular values are compared to the given, or default TOL, and
      the estimated order  n  is returned, possibly after user's
      confirmation.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index