The QZ iteration for the generalized eigenvalue problem

Directly to the input form

 
  • In order to determine all eigenvalues (including the complex ones) and the corresponding eigenvectors of a generalized matrix eigenvalue problem of the form
    Ax = λ Bx , x <> 0
    with a not too large dimension the QZ algorithm of Stewart and Moler is the method of choice. It is a thoughtful generalization of the QR algorithm using Francis double shifts. For a more detailed description of this algorithm look here .
  • The convergence is quadratic in general. You will see this in the iteration output, where the last two subdiagonal elements of the current Hessenberg matrix are shown: typically the second last element will go to zero (the eigenvalues being separated in pairs) and this quadratically.
  • Since the method also tests splitting of the Hessenberg form (other subdiagonal elements then the second last going to zero) where can be gaps in the iteration protocol.
  • we use the code DGGEV from LAPACK here.
 

Input data

 
  • Here there are several possibilities for selecting the matrix pair A, B :
    1. A predefined parametric case where the stability properties of the method can be tested. This is with n=2 and the parameter ε gives in the range ]0,1] two real eigenvalues, one tending to -2 and the other to infinity as ε -> 0.
    2. you can construct a matrix pair A, B by prescribing the (real) entries of two diagonals, considered as the diagonals of the final triangular pair. Also you can decide whether this triangular form should be diagonal or not. If not, then the strict upper triangle is filled with random numbers in the range [-fac,fac], fac being input. Then internally two unitary random matrices Q and Z are generated and A and B are computed as
      A = QT RA ZT and B = QT RB ZT
      If diagonal element of RB is not zero the eigenvalue will be the quotient of the two corresponding diagonal elements (and real, clearly). Observe that the resulting values alpha[i] and beta[i] are unique up to a common factor only!
    3. and finally you may type in a matrix pair of your own. In this case the exact eigenvalues are unknown of course.
  • Further inputs: dimension n in the cases 2 and 3. Important: 2 <= n <= 30 !
  • you may wish a printout of A, B.
  • you may wish a printout of the complete eigensystem.
 

The output

 
  • A printout of A, B, if requested.
  • The computed eigenvalues and their errors, as far as known (cases 1, 2)
  • The complete eigensystem, if requested.
  • A short iteration record, which indicates the number of iterations needed for the computation of each individual eigenvalue.
 

Questions?!

 
  • Does the convergence depend on the eigenvalue distribution?
  • How do eigenvalues and eigenvectors change, if one changes the matrix slightly?
 

to the input form

 
Back to the top!

09.01.2019