## TB04BV

### Strictly proper part of a proper transfer function matrix

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

Purpose

      To separate the strictly proper part G0 from the constant part D
      of an P-by-M proper transfer function matrix G.

Specification

          SUBROUTINE TB04BV( ORDER, P, M, MD, IGN, LDIGN, IGD, LDIGD, GN,
         $                   GD, D, LDD, TOL, INFO )
    C     .. Scalar Arguments ..
          CHARACTER          ORDER
          DOUBLE PRECISION   TOL
          INTEGER            INFO, LDD, LDIGD, LDIGN, M, MD, P
    C     .. Array Arguments ..
          DOUBLE PRECISION   D(LDD,*), GD(*), GN(*)
          INTEGER            IGD(LDIGD,*), IGN(LDIGN,*)

Arguments

Mode Parameters

      ORDER   CHARACTER*1
              Specifies the order in which the polynomial coefficients
              of the transfer function matrix are stored, as follows:
              = 'I':  Increasing order of powers of the indeterminate;
              = 'D':  Decreasing order of powers of the indeterminate.

Input/Output Parameters

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

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

      MD      (input) INTEGER
              The maximum degree of the polynomials in G, plus 1, i.e.,
              MD = MAX(IGD(I,J)) + 1.
                   I,J

      IGN     (input/output) INTEGER array, dimension (LDIGN,M)
              On entry, the leading P-by-M part of this array must
              contain the degrees of the numerator polynomials in G:
              the (i,j) element of IGN must contain the degree of the
              numerator polynomial of the polynomial ratio G(i,j).
              On exit, the leading P-by-M part of this array contains
              the degrees of the numerator polynomials in G0.

      LDIGN   INTEGER
              The leading dimension of array IGN.  LDIGN >= max(1,P).

      IGD     (input) INTEGER array, dimension (LDIGD,M)
              The leading P-by-M part of this array must contain the
              degrees of the denominator polynomials in G (and G0):
              the (i,j) element of IGD contains the degree of the
              denominator polynomial of the polynomial ratio G(i,j).

      LDIGD   INTEGER
              The leading dimension of array IGD.  LDIGD >= max(1,P).

      GN      (input/output) DOUBLE PRECISION array, dimension (P*M*MD)
              On entry, this array must contain the coefficients of the
              numerator polynomials, Num(i,j), of the transfer function
              matrix G. The polynomials are stored in a column-wise
              order, i.e., Num(1,1), Num(2,1), ..., Num(P,1), Num(1,2),
              Num(2,2), ..., Num(P,2), ..., Num(1,M), Num(2,M), ...,
              Num(P,M); MD memory locations are reserved for each
              polynomial, hence, the (i,j) polynomial is stored starting
              from the location ((j-1)*P+i-1)*MD+1. The coefficients
              appear in increasing or decreasing order of the powers
              of the indeterminate, according to ORDER.
              On exit, this array contains the coefficients of the
              numerator polynomials of the strictly proper part G0 of
              the transfer function matrix G, stored similarly.

      GD      (input) DOUBLE PRECISION array, dimension (P*M*MD)
              This array must contain the coefficients of the
              denominator polynomials, Den(i,j), of the transfer
              function matrix G. The polynomials are stored as for the
              numerator polynomials.

      D       (output) DOUBLE PRECISION array, dimension (LDD,M)
              The leading P-by-M part of this array contains the
              matrix D.

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

Tolerances

      TOL     DOUBLE PRECISION
              The tolerance to be used in determining the degrees of
              the numerators Num0(i,j) of the strictly proper part of
              the transfer function matrix G. If the user sets TOL > 0,
              then the given value of TOL is used as an absolute
              tolerance; the leading coefficients with absolute value
              less than TOL are considered neglijible. If the user sets
              TOL <= 0, then an implicitly computed, default tolerance,
              defined by TOLDEF = IGN(i,j)*EPS*NORM( Num(i,j) ) is used
              instead, where EPS is the machine precision (see LAPACK
              Library routine DLAMCH), and NORM denotes the infinity
              norm (the maximum coefficient in absolute value).

Error Indicator

      INFO    INTEGER
              = 0:  successful exit;
              < 0:  if INFO = -i, the i-th argument had an illegal
                    value;
              = 1:  if the transfer function matrix is not proper;
              = 2:  if a denominator polynomial is null.

Method

      The (i,j) entry of the real matrix D is zero, if the degree of
      Num(i,j), IGN(i,j), is less than the degree of Den(i,j), IGD(i,j),
      and it is given by the ratio of the leading coefficients of
      Num(i,j) and Den(i,j), if IGN(i,j) is equal to IGD(i,j),
      for i = 1 : P, and for j = 1 : M.

Further Comments

      For maximum efficiency of index calculations, GN and GD are
      implemented as one-dimensional arrays.

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index