1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201
|
<HTML>
<HEAD><TITLE>MB04RS - SLICOT Library Routine Documentation</TITLE>
</HEAD>
<BODY>
<H2><A Name="MB04RS">MB04RS</A></H2>
<H3>
Solution of a generalized real Sylvester equation with matrix pairs in generalized real Schur form
</H3>
<A HREF ="#Specification"><B>[Specification]</B></A>
<A HREF ="#Arguments"><B>[Arguments]</B></A>
<A HREF ="#Method"><B>[Method]</B></A>
<A HREF ="#References"><B>[References]</B></A>
<A HREF ="#Comments"><B>[Comments]</B></A>
<A HREF ="#Example"><B>[Example]</B></A>
<P>
<B><FONT SIZE="+1">Purpose</FONT></B>
<PRE>
To solve the generalized real Sylvester equation
A * R - L * B = scale * C, (1)
D * R - L * E = scale * F,
using Level 1 and 2 BLAS, where R and L are unknown real M-by-N
matrices, and (A, D), (B, E) and (C, F) are given matrix pairs of
size M-by-M, N-by-N and M-by-N, respectively. (A,D) and (B,E) must
be in generalized Schur canonical form, i.e., A, B are upper
quasi-triangular and D, E are upper triangular.
The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1 is an
output scaling factor chosen to avoid overflow.
This routine is intended to be called only by SLICOT Library
routine MB04RT. For efficiency purposes, the computations are
aborted when the absolute value of an element of R or L is greater
than a given value PMAX.
</PRE>
<A name="Specification"><B><FONT SIZE="+1">Specification</FONT></B></A>
<PRE>
SUBROUTINE MB04RS( M, N, PMAX, A, LDA, B, LDB, C, LDC, D, LDD, E,
$ LDE, F, LDF, SCALE, IWORK, INFO )
C .. Scalar Arguments ..
INTEGER INFO, LDA, LDB, LDC, LDD, LDE, LDF, M, N
DOUBLE PRECISION PMAX, SCALE
C .. Array Arguments ..
INTEGER IWORK( * )
DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * ),
$ D( LDD, * ), E( LDE, * ), F( LDF, * )
</PRE>
<A name="Arguments"><B><FONT SIZE="+1">Arguments</FONT></B></A>
<P>
</PRE>
<B>Input/Output Parameters</B>
<PRE>
M (input) INTEGER
The order of the matrices A and D, and the row dimension
of C, F, R and L. M >= 0.
N (input) INTEGER
The order of the matrices B and E, and the column
dimension of C, F, R and L. N >= 0.
PMAX (input) DOUBLE PRECISION
An upper bound for the absolute value of the elements of
the solution (R, L). PMAX >= 1.0D0.
A (input) DOUBLE PRECISION array, dimension (LDA, M)
On entry, the leading M-by-M upper quasi-triangular part
of this array must contain the matrix A in the generalized
real Schur form, as returned by LAPACK routine DGGES.
LDA INTEGER
The leading dimension of the array A. LDA >= max(1, M).
B (input) DOUBLE PRECISION array, dimension (LDB, N)
On entry, the leading N-by-N upper quasi-triangular part
of this array must contain the matrix B in the generalized
real Schur form.
LDB INTEGER
The leading dimension of the 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 right-hand-side of the first matrix equation
in (1).
On exit, if INFO = 0, the leading M-by-N part of this
array contains the solution R.
LDC INTEGER
The leading dimension of the array C. LDC >= max(1, M).
D (input) DOUBLE PRECISION array, dimension (LDD, M)
On entry, the leading M-by-M upper triangular part of this
array must contain the matrix D in the generalized real
Schur form. The diagonal elements are non-negative.
LDD INTEGER
The leading dimension of the array D. LDD >= max(1, M).
E (input) DOUBLE PRECISION array, dimension (LDE, N)
On entry, the leading N-by-N upper triangular part of this
array must contain the matrix E in the generalized real
Schur form. The diagonal elements are non-negative.
LDE INTEGER
The leading dimension of the array E. LDE >= max(1, N).
F (input/output) DOUBLE PRECISION array, dimension (LDF, N)
On entry, the leading M-by-N part of this array must
contain the right-hand-side of the second matrix equation
in (1).
On exit, if INFO = 0, the leading M-by-N part of this
array contains the solution L.
LDF INTEGER
The leading dimension of the array F. LDF >= max(1, M).
SCALE (output) DOUBLE PRECISION
On exit, 0 <= SCALE <= 1. If 0 < SCALE < 1, the solutions
R and L (C and F on entry) will hold the solutions to a
slightly perturbed system but the input matrices A, B, D
and E have not been changed. If SCALE = 0, R and L will
hold the solutions to the homogeneous system with C = 0
and F = 0. Normally, SCALE = 1.
</PRE>
<B>Workspace</B>
<PRE>
IWORK INTEGER array, dimension (M+N+2)
</PRE>
<B>Error Indicator</B>
<PRE>
INFO INTEGER
= 0: successful exit;
= 1: an element of R or L had the absolute value greater
than the given value PMAX.
= 2: the matrix pairs (A, D) and (B, E) have common or
very close eigenvalues. The matrix Z in section
METHOD is (almost) singular.
</PRE>
<A name="Method"><B><FONT SIZE="+1">Method</FONT></B></A>
<PRE>
The routine uses an adaptation of the method for solving
generalized Sylvester equations [1], which controls the magnitude
of the individual elements of the computed solution [2].
In matrix notation, solving equation (1) corresponds to solve
Zx = scale * b, where Z is defined as
Z = [ kron(In, A) -kron(B', Im) ] (2)
[ kron(In, D) -kron(E', Im) ],
Ik is the identity matrix of size k and X' is the transpose of X.
kron(X, Y) is the Kronecker product between the matrices X and Y.
The routine solves a number of systems (2) with n and m at most 2.
</PRE>
<A name="References"><B><FONT SIZE="+1">References</FONT></B></A>
<PRE>
[1] Kagstrom, B. and Westin, L.
Generalized Schur Methods with Condition Estimators for
Solving the Generalized Sylvester Equation.
IEEE Trans. Auto. Contr., 34, pp. 745-751, 1989.
[2] Kagstrom, B. and Westin, L.
GSYLV - Fortran Routines for the Generalized Schur Method with
Dif Estimators for Solving the Generalized Sylvester Equation.
Report UMINF-132.86, Institute of Information Processing,
Univ. of Umea, Sweden, July 1987.
</PRE>
<A name="Comments"><B><FONT SIZE="+1">Further Comments</FONT></B></A>
<PRE>
None
</PRE>
<A name="Example"><B><FONT SIZE="+1">Example</FONT></B></A>
<P>
<B>Program Text</B>
<PRE>
None
</PRE>
<B>Program Data</B>
<PRE>
None
</PRE>
<B>Program Results</B>
<PRE>
None
</PRE>
<HR>
<A HREF=support.html><B>Return to Supporting Routines index</B></A></BODY>
</HTML>
|