## MB03RY

### Solution of a Sylvester equation -AX + XB = C, with A and B in real Schur form, aborting the computations when the norm of X is too large

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

Purpose

      To solve the Sylvester equation -AX + XB = C, where A and B are
      M-by-M and N-by-N matrices, respectively, in real Schur form.

      This routine is intended to be called only by SLICOT Library
      routine MB03RD. For efficiency purposes, the computations are
      aborted when the infinity norm of an elementary submatrix of X is
      greater than a given value PMAX.

Specification

          SUBROUTINE MB03RY( M, N, PMAX, A, LDA, B, LDB, C, LDC, INFO )
    C     .. Scalar Arguments ..
          INTEGER           INFO, LDA, LDB, LDC, M, N
          DOUBLE PRECISION  PMAX
    C     .. Array Arguments ..
          DOUBLE PRECISION  A(LDA,*), B(LDB,*), C(LDC,*)

Arguments

Input/Output Parameters

      M       (input) INTEGER
              The order of the matrix A and the number of rows of the
              matrices C and X.  M >= 0.

      N       (input) INTEGER
              The order of the matrix B and the number of columns of the
              matrices C and X.  N >= 0.

      PMAX    (input) DOUBLE PRECISION
              An upper bound for the infinity norm of an elementary
              submatrix of X (see METHOD).

      A       (input) DOUBLE PRECISION array, dimension (LDA,M)
              The leading M-by-M part of this array must contain the
              matrix A of the Sylvester equation, in real Schur form.
              The elements below the real Schur form are not referenced.

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

      B       (input) DOUBLE PRECISION array, dimension (LDB,N)
              The leading N-by-N part of this array must contain the
              matrix B of the Sylvester equation, in real Schur form.
              The elements below the real Schur form are not referenced.

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

      C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
              On entry, the leading M-by-N part of this array must
              contain the matrix C of the Sylvester equation.
              On exit, if INFO = 0, the leading M-by-N part of this
              array contains the solution matrix X of the Sylvester
              equation, and each elementary submatrix of X (see METHOD)
              has the infinity norm less than or equal to PMAX.
              On exit, if INFO = 1, the solution matrix X has not been
              computed completely, because an elementary submatrix of X
              had the infinity norm greater than PMAX. Part of the
              matrix C has possibly been overwritten with the
              corresponding part of X.

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

Error Indicator

      INFO    INTEGER
              = 0:  successful exit;
              = 1:  an elementary submatrix of X had the infinity norm
                    greater than the given value PMAX.

Method

      The routine uses an adaptation of the standard method for solving
      Sylvester equations [1], which controls the magnitude of the
      individual elements of the computed solution [2]. The equation
      -AX + XB = C can be rewritten as
                                  p            l-1
        -A  X   + X  B   = C   + sum  A  X   - sum  X  B
          kk kl    kl ll    kl  i=k+1  ki il   j=1   kj jl

      for l = 1:q, and k = p:-1:1, where A  , B  , C  , and X  , are
                                          kk   ll   kl       kl
      block submatrices defined by the partitioning induced by the Schur
      form of A and B, and p and q are the numbers of the diagonal
      blocks of A and B, respectively. So, the elementary submatrices of
      X are found block column by block column, starting from the
      bottom. If any such elementary submatrix has the infinity norm
      greater than the given value PMAX, the calculations are ended.

References

      [1] Bartels, R.H. and Stewart, G.W.  T
          Solution of the matrix equation A X + XB = C.
          Comm. A.C.M., 15, pp. 820-826, 1972.

      [2] Bavely, C. and Stewart, G.W.
          An Algorithm for Computing Reducing Subspaces by Block
          Diagonalization.
          SIAM J. Numer. Anal., 16, pp. 359-367, 1979.

Numerical Aspects

                                2      2
      The algorithm requires 0(M N + MN ) operations.

Further Comments

      Let

             ( A   C )       ( I   X )
         M = (       ),  Y = (       ).
             ( 0   B )       ( 0   I )

      Then

          -1      ( A   0 )
         Y  M Y = (       ),
                  ( 0   B )

      hence Y is an non-orthogonal transformation matrix which performs
      the reduction of M to a block-diagonal form. Bounding a norm of
      X is equivalent to setting an upper bound to the condition number
      of the transformation matrix Y.

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index