![]() |
Eigen
5.0.1-dev+7c7d8473
|
#include <Eigen/src/Eigenvalues/ComplexQZ.h>
Performs a QZ decomposition of a pair of matrices A, B.
This is defined in the Eigenvalues module.
| MatrixType_ | the type input type of the matrix. |
Given to complex square matrices A and B, this class computes the QZ decomposition \( A = Q S Z \), \( B = Q T Z\) where Q and Z are unitary matrices and S and T a re upper-triangular matrices. More precisely, Q and Z fulfill \( Q Q* = Id\) and \( Z Z* = Id\). The generalized Eigenvalues are then obtained as ratios of corresponding diagonal entries, lambda(i) = S(i,i) / T(i, i).
The QZ algorithm was introduced in the seminal work "An Algorithm for Generalized Matrix Eigenvalue Problems" by Moler & Stewart in 1973. The matrix pair S = A, T = B is first transformed to Hessenberg-Triangular form where S is an upper Hessenberg matrix and T is an upper Triangular matrix.
This pair is subsequently reduced to the desired form using implicit QZ shifts as described in the original paper. The algorithms to find small entries on the diagonals and subdiagonals are based on the variants in the implementation for Real matrices in the RealQZ class.