1DTGSNA(1)                LAPACK routine (version 3.1)                DTGSNA(1)
2
3
4

NAME

6       DTGSNA  - reciprocal condition numbers for specified eigenvalues and/or
7       eigenvectors of a matrix pair (A, B) in generalized real Schur  canoni‐
8       cal form (or of any matrix pair (Q*A*Z', Q*B*Z') with orthogonal matri‐
9       ces Q and Z, where Z' denotes the transpose of Z
10

SYNOPSIS

12       SUBROUTINE DTGSNA( JOB, HOWMNY, SELECT, N, A, LDA, B,  LDB,  VL,  LDVL,
13                          VR, LDVR, S, DIF, MM, M, WORK, LWORK, IWORK, INFO )
14
15           CHARACTER      HOWMNY, JOB
16
17           INTEGER        INFO, LDA, LDB, LDVL, LDVR, LWORK, M, MM, N
18
19           LOGICAL        SELECT( * )
20
21           INTEGER        IWORK( * )
22
23           DOUBLE         PRECISION  A(  LDA, * ), B( LDB, * ), DIF( * ), S( *
24                          ), VL( LDVL, * ), VR( LDVR, * ), WORK( * )
25

PURPOSE

27       DTGSNA estimates reciprocal condition numbers for specified eigenvalues
28       and/or  eigenvectors  of a matrix pair (A, B) in generalized real Schur
29       canonical form (or of any matrix pair (Q*A*Z', Q*B*Z') with  orthogonal
30       matrices Q and Z, where Z' denotes the transpose of Z.
31
32       (A,  B)  must be in generalized real Schur form (as returned by DGGES),
33       i.e. A is block  upper  triangular  with  1-by-1  and  2-by-2  diagonal
34       blocks. B is upper triangular.
35
36
37

ARGUMENTS

39       JOB     (input) CHARACTER*1
40               Specifies  whether condition numbers are required for eigenval‐
41               ues (S) or eigenvectors (DIF):
42               = 'E': for eigenvalues only (S);
43               = 'V': for eigenvectors only (DIF);
44               = 'B': for both eigenvalues and eigenvectors (S and DIF).
45
46       HOWMNY  (input) CHARACTER*1
47               = 'A': compute condition numbers for all eigenpairs;
48               = 'S': compute condition numbers for selected eigenpairs speci‐
49               fied by the array SELECT.
50
51       SELECT  (input) LOGICAL array, dimension (N)
52               If HOWMNY = 'S', SELECT specifies the eigenpairs for which con‐
53               dition numbers are required. To select  condition  numbers  for
54               the   eigenpair   corresponding  to  a  real  eigenvalue  w(j),
55               SELECT(j) must be set to .TRUE.. To  select  condition  numbers
56               corresponding  to  a complex conjugate pair of eigenvalues w(j)
57               and w(j+1), either SELECT(j) or SELECT(j+1) or  both,  must  be
58               set to .TRUE..  If HOWMNY = 'A', SELECT is not referenced.
59
60       N       (input) INTEGER
61               The order of the square matrix pair (A, B). N >= 0.
62
63       A       (input) DOUBLE PRECISION array, dimension (LDA,N)
64               The upper quasi-triangular matrix A in the pair (A,B).
65
66       LDA     (input) INTEGER
67               The leading dimension of the array A. LDA >= max(1,N).
68
69       B       (input) DOUBLE PRECISION array, dimension (LDB,N)
70               The upper triangular matrix B in the pair (A,B).
71
72       LDB     (input) INTEGER
73               The leading dimension of the array B. LDB >= max(1,N).
74
75       VL      (input) DOUBLE PRECISION array, dimension (LDVL,M)
76               If  JOB  = 'E' or 'B', VL must contain left eigenvectors of (A,
77               B), corresponding to the eigenpairs  specified  by  HOWMNY  and
78               SELECT.  The eigenvectors must be stored in consecutive columns
79               of VL, as returned by DTGEVC.  If JOB = 'V', VL is  not  refer‐
80               enced.
81
82       LDVL    (input) INTEGER
83               The leading dimension of the array VL. LDVL >= 1.  If JOB = 'E'
84               or 'B', LDVL >= N.
85
86       VR      (input) DOUBLE PRECISION array, dimension (LDVR,M)
87               If JOB = 'E' or 'B', VR must contain right eigenvectors of  (A,
88               B),  corresponding  to  the  eigenpairs specified by HOWMNY and
89               SELECT. The eigenvectors must be stored in consecutive  columns
90               ov  VR,  as returned by DTGEVC.  If JOB = 'V', VR is not refer‐
91               enced.
92
93       LDVR    (input) INTEGER
94               The leading dimension of the array VR. LDVR >= 1.  If JOB = 'E'
95               or 'B', LDVR >= N.
96
97       S       (output) DOUBLE PRECISION array, dimension (MM)
98               If  JOB  =  'E' or 'B', the reciprocal condition numbers of the
99               selected eigenvalues, stored in  consecutive  elements  of  the
100               array. For a complex conjugate pair of eigenvalues two consecu‐
101               tive elements of S are  set  to  the  same  value.  Thus  S(j),
102               DIF(j), and the j-th columns of VL and VR all correspond to the
103               same eigenpair (but not in general the j-th  eigenpair,  unless
104               all  eigenpairs  are  selected).  If JOB = 'V', S is not refer‐
105               enced.
106
107       DIF     (output) DOUBLE PRECISION array, dimension (MM)
108               If JOB = 'V' or 'B', the estimated reciprocal condition numbers
109               of the selected eigenvectors, stored in consecutive elements of
110               the array. For a complex eigenvector two  consecutive  elements
111               of  DIF are set to the same value. If the eigenvalues cannot be
112               reordered to compute DIF(j), DIF(j) is set to 0; this can  only
113               occur when the true value would be very small anyway.  If JOB =
114               'E', DIF is not referenced.
115
116       MM      (input) INTEGER
117               The number of elements in the arrays S and DIF. MM >= M.
118
119       M       (output) INTEGER
120               The number of elements of the arrays S and DIF  used  to  store
121               the  specified condition numbers; for each selected real eigen‐
122               value one element is used, and for each selected complex conju‐
123               gate  pair  of eigenvalues, two elements are used.  If HOWMNY =
124               'A', M is set to N.
125
126       WORK      (workspace/output)   DOUBLE   PRECISION   array,    dimension
127       (MAX(1,LWORK))
128               On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
129
130       LWORK   (input) INTEGER
131               The  dimension  of the array WORK. LWORK >= max(1,N).  If JOB =
132               'V' or 'B' LWORK >= 2*N*(N+2)+16.
133
134               If LWORK = -1, then a workspace query is assumed;  the  routine
135               only  calculates  the  optimal  size of the WORK array, returns
136               this value as the first entry of the WORK array, and  no  error
137               message related to LWORK is issued by XERBLA.
138
139       IWORK   (workspace) INTEGER array, dimension (N + 6)
140               If JOB = 'E', IWORK is not referenced.
141
142       INFO    (output) INTEGER
143               =0: Successful exit
144               <0: If INFO = -i, the i-th argument had an illegal value
145

FURTHER DETAILS

147       The  reciprocal of the condition number of a generalized eigenvalue w =
148       (a, b) is defined as
149
150            S(w) = (|u'Av|**2 + |u'Bv|**2)**(1/2) / (norm(u)*norm(v))
151
152       where u and v are the left and right eigenvectors of (A, B) correspond‐
153       ing  to  w;  |z|  denotes the absolute value of the complex number, and
154       norm(u) denotes the 2-norm of the vector u.
155       The pair (a, b) corresponds to an eigenvalue w = a/b (=  u'Av/u'Bv)  of
156       the  matrix pair (A, B). If both a and b equal zero, then (A B) is sin‐
157       gular and S(I) = -1 is returned.
158
159       An approximate error bound on the chordal  distance  between  the  i-th
160       computed generalized eigenvalue w and the corresponding exact eigenval‐
161       ue lambda is
162
163            chord(w, lambda) <= EPS * norm(A, B) / S(I)
164
165       where EPS is the machine precision.
166
167       The reciprocal of the condition number DIF(i) of  right  eigenvector  u
168       and left eigenvector v corresponding to the generalized eigenvalue w is
169       defined as follows:
170
171       a) If the i-th eigenvalue w = (a,b) is real
172
173          Suppose U and V are orthogonal transformations such that
174
175                     U'*(A, B)*V  = (S, T) = ( a   *  ) ( b  *  )  1
176                                             ( 0  S22 ),( 0 T22 )  n-1
177                                               1  n-1     1 n-1
178
179          Then the reciprocal condition number DIF(i) is
180
181                     Difl((a, b), (S22, T22)) = sigma-min( Zl ),
182
183          where sigma-min(Zl) denotes the smallest singular value of the
184          2(n-1)-by-2(n-1) matrix
185
186              Zl = [ kron(a, In-1)  -kron(1, S22) ]
187                   [ kron(b, In-1)  -kron(1, T22) ] .
188
189          Here In-1 is the identity matrix of size n-1. kron(X, Y) is the
190          Kronecker product between the matrices X and Y.
191
192          Note that if the default method for computing DIF(i) is wanted
193          (see DLATDF), then the parameter DIFDRI (see below) should be
194          changed from 3 to 4 (routine DLATDF(IJOB = 2 will be used)).
195          See DTGSYL for more details.
196
197       b) If the i-th and (i+1)-th eigenvalues are complex conjugate pair,
198
199          Suppose U and V are orthogonal transformations such that
200
201                     U'*(A, B)*V = (S, T) = ( S11  *   ) ( T11  *  )  2
202                                            ( 0    S22 ),( 0    T22) n-2
203                                              2    n-2     2    n-2
204
205          and (S11, T11) corresponds to the complex conjugate eigenvalue
206          pair (w, conjg(w)). There exist unitary matrices U1 and V1 such
207          that
208
209              U1'*S11*V1 = ( s11 s12 )   and U1'*T11*V1 = ( t11 t12 )
210                           (  0  s22 )                    (  0  t22 )
211
212          where the generalized eigenvalues w = s11/t11 and
213          conjg(w) = s22/t22.
214
215          Then the reciprocal condition number DIF(i) is bounded by
216
217              min( d1, max( 1, |real(s11)/real(s22)| )*d2 )
218
219          where, d1 = Difl((s11, t11), (s22, t22)) = sigma-min(Z1), where
220          Z1 is the complex 2-by-2 matrix
221
222                   Z1 =  [ s11  -s22 ]
223                         [ t11  -t22 ],
224
225          This is done by computing (using real arithmetic) the
226          roots of the characteristical polynomial det(Z1' * Z1 - lambda I),
227          where Z1' denotes the conjugate transpose of Z1 and det(X) denotes
228          the determinant of X.
229
230          and d2 is an upper bound on Difl((S11, T11), (S22, T22)), i.e. an
231          upper bound on sigma-min(Z2), where Z2 is (2n-2)-by-(2n-2)
232
233                   Z2 = [ kron(S11', In-2)  -kron(I2, S22) ]
234                        [ kron(T11', In-2)  -kron(I2, T22) ]
235
236          Note that if the default method for computing DIF is wanted (see
237          DLATDF), then the parameter DIFDRI (see below) should be changed
238          from 3 to 4 (routine DLATDF(IJOB = 2 will be used)). See DTGSYL
239          for more details.
240
241       For each eigenvalue/vector specified by SELECT, DIF stores a  Frobenius
242       norm-based estimate of Difl.
243
244       An  approximate  error bound for the i-th computed eigenvector VL(i) or
245       VR(i) is given by
246
247                  EPS * norm(A, B) / DIF(i).
248
249       See ref. [2-3] for more details and further references.
250
251       Based on contributions by
252          Bo Kagstrom and Peter Poromaa, Department of Computing Science,
253          Umea University, S-901 87 Umea, Sweden.
254
255       References
256       ==========
257
258       [1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the
259           Generalized Real Schur Form of a Regular Matrix Pair (A, B), in
260           M.S. Moonen et al (eds), Linear Algebra for Large Scale and
261           Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
262
263       [2] B. Kagstrom and P. Poromaa; Computing Eigenspaces with Specified
264           Eigenvalues of a Regular Matrix Pair (A, B) and Condition
265           Estimation: Theory, Algorithms and Software,
266           Report UMINF - 94.04, Department of Computing Science, Umea
267           University, S-901 87 Umea, Sweden, 1994. Also as LAPACK Working
268           Note 87. To appear in Numerical Algorithms, 1996.
269
270       [3] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software
271           for Solving the Generalized Sylvester Equation and Estimating the
272           Separation between Regular Matrix Pairs, Report UMINF - 93.23,
273           Department of Computing Science, Umea University, S-901 87 Umea,
274           Sweden, December 1993, Revised April 1994, Also as LAPACK Working
275           Note 75.  To appear in ACM Trans. on Math. Software, Vol 22,
276           No 1, 1996.
277
278
279
280
281 LAPACK routine (version 3.1)    November 2006                       DTGSNA(1)
Impressum