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