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
|
<HTML>
<HEAD><TITLE>TG01WD - SLICOT Library Routine Documentation</TITLE>
</HEAD>
<BODY>
<H2><A Name="TG01WD">TG01WD</A></H2>
<H3>
Reduction of the descriptor dynamics matrix pair to 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 reduce the pair (A,E) to a real generalized Schur form
by using an orthogonal equivalence transformation
(A,E) <-- (Q'*A*Z,Q'*E*Z) and to apply the transformation
to the matrices B and C: B <-- Q'*B and C <-- C*Z.
</PRE>
<A name="Specification"><B><FONT SIZE="+1">Specification</FONT></B></A>
<PRE>
SUBROUTINE TG01WD( N, M, P, A, LDA, E, LDE, B, LDB, C, LDC,
$ Q, LDQ, Z, LDZ, ALPHAR, ALPHAI, BETA, DWORK,
$ LDWORK, INFO )
C .. Scalar Arguments ..
INTEGER INFO, LDA, LDB, LDC, LDE, LDQ, LDWORK, LDZ,
$ M, N, P
C .. Array Arguments ..
DOUBLE PRECISION A(LDA,*), ALPHAI(*), ALPHAR(*), B(LDB,*),
$ BETA(*), C(LDC,*), DWORK(*), E(LDE,*),
$ Q(LDQ,*), Z(LDZ,*)
</PRE>
<A name="Arguments"><B><FONT SIZE="+1">Arguments</FONT></B></A>
<P>
</PRE>
<B>Input/Output Parameters</B>
<PRE>
N (input) INTEGER
The order of the original state-space representation,
i.e., the order of the matrices A and E. N >= 0.
M (input) INTEGER
The number of system inputs, or of columns of B. M >= 0.
P (input) INTEGER
The number of system outputs, or of rows of C. P >= 0.
A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
On entry, the leading N-by-N part of this array must
contain the original state dynamics matrix A.
On exit, the leading N-by-N part of this array contains
the matrix Q' * A * Z in an upper quasi-triangular form.
The elements below the first subdiagonal are set to zero.
LDA INTEGER
The leading dimension of array A. LDA >= MAX(1,N).
E (input/output) DOUBLE PRECISION array, dimension (LDE,N)
On entry, the leading N-by-N part of this array must
contain the original descriptor matrix E.
On exit, the leading N-by-N part of this array contains
the matrix Q' * E * Z in an upper triangular form.
The elements below the diagonal are set to zero.
LDE INTEGER
The leading dimension of array E. LDE >= MAX(1,N).
B (input/output) DOUBLE PRECISION array, dimension (LDB,M)
On entry, the leading N-by-M part of this array must
contain the input matrix B.
On exit, the leading N-by-M part of this array contains
the transformed input matrix Q' * B.
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 P-by-N part of this array must
contain the output matrix C.
On exit, the leading P-by-N part of this array contains
the transformed output matrix C * Z.
LDC INTEGER
The leading dimension of array C. LDC >= MAX(1,P).
Q (output) DOUBLE PRECISION array, dimension (LDQ,N)
The leading N-by-N part of this array contains the left
orthogonal transformation matrix used to reduce (A,E) to
the real generalized Schur form.
The columns of Q are the left generalized Schur vectors
of the pair (A,E).
LDQ INTEGER
The leading dimension of array Q. LDQ >= max(1,N).
Z (output) DOUBLE PRECISION array, dimension (LDZ,N)
The leading N-by-N part of this array contains the right
orthogonal transformation matrix used to reduce (A,E) to
the real generalized Schur form.
The columns of Z are the right generalized Schur vectors
of the pair (A,E).
LDZ INTEGER
The leading dimension of array Z. LDZ >= max(1,N).
ALPHAR (output) DOUBLE PRECISION array, dimension (N)
ALPHAI (output) DOUBLE PRECISION array, dimension (N)
BETA (output) DOUBLE PRECISION array, dimension (N)
On exit, if INFO = 0, (ALPHAR(j) + ALPHAI(j)*i)/BETA(j),
j=1,...,N, will be the generalized eigenvalues.
ALPHAR(j) + ALPHAI(j)*i, and BETA(j), j=1,...,N, are the
diagonals of the complex Schur form that would result if
the 2-by-2 diagonal blocks of the real Schur form of
(A,E) were further reduced to triangular form using
2-by-2 complex unitary transformations.
If ALPHAI(j) is zero, then the j-th eigenvalue is real;
if positive, then the j-th and (j+1)-st eigenvalues are a
complex conjugate pair, with ALPHAI(j+1) negative.
</PRE>
<B>Workspace</B>
<PRE>
DWORK DOUBLE PRECISION array, dimension (LDWORK)
On exit, if INFO = 0, DWORK(1) returns the optimal value
of LDWORK.
LDWORK INTEGER
The dimension of working array DWORK. LDWORK >= 8*N+16.
For optimum performance LDWORK should be larger.
</PRE>
<B>Error Indicator</B>
<PRE>
INFO INTEGER
= 0: successful exit;
< 0: if INFO = -i, the i-th argument had an illegal
value;
> 0: if INFO = i, the QZ algorithm failed to compute
the generalized real Schur form; elements i+1:N of
ALPHAR, ALPHAI, and BETA should be correct.
</PRE>
<A name="Method"><B><FONT SIZE="+1">Method</FONT></B></A>
<PRE>
The pair (A,E) is reduced to a real generalized Schur form using
an orthogonal equivalence transformation (A,E) <-- (Q'*A*Z,Q'*E*Z)
and the transformation is applied to the matrices B and C:
B <-- Q'*B and C <-- C*Z.
</PRE>
<A name="Numerical Aspects"><B><FONT SIZE="+1">Numerical Aspects</FONT></B></A>
<PRE> 3
The algorithm requires about 25N floating point operations.
</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>
<p>
<A HREF=..\libindex.html><B>Return to index</B></A></BODY>
</HTML>
|