# qz

QZ factorization for generalized eigenvalues

## Syntax

```[AA,BB,Q,Z] = qz(A,B) [AA,BB,Q,Z,V,W] = qz(A,B) qz(A,B,flag) ```

## Description

The `qz` function gives access to intermediate results in the computation of generalized eigenvalues.

`[AA,BB,Q,Z] = qz(A,B)` for square matrices `A` and `B`, produces upper quasitriangular matrices `AA` and `BB`, and unitary matrices `Q` and `Z` such that `Q*A*Z = AA`, and `Q*B*Z = BB`. For complex matrices, `AA` and `BB` are triangular.

`[AA,BB,Q,Z,V,W] = qz(A,B)` also produces matrices `V` and `W` whose columns are generalized eigenvectors.

`qz(A,B,flag)` for real matrices `A` and `B`, produces one of two decompositions depending on the value of `flag`:

 `'complex'` Produces a possibly complex decomposition with a triangular `AA`. For compatibility with earlier versions, `'complex'` is the default. `'real'` Produces a real decomposition with a quasitriangular `AA`, containing 1-by-1 and 2-by-2 blocks on its diagonal.

If `AA` is triangular, then the diagonal elements ```a = diag(AA)``` and `b = diag(BB)` are the generalized eigenvalues that satisfy

```A*V*b = B*V*a b'*W'*A = a'*W'*B```

The eigenvalues produced by `lambda = eig(A,B)` are the ratios of the diagonal elements `a` and `b`, such that `lambda = a./b`.

If `AA` is not triangular, it is necessary to further reduce the 2-by-2 blocks to obtain the eigenvalues of the full system.

## Version History

Introduced before R2006a