HQR

The HQR function returns all eigenvalues of an upper Hessenberg array. Using the output produced by the ELMHES function, this function finds all eigenvalues of the original real, nonsymmetric array. The result is an n -element complex vector.

HQR is based on the routine hqr described in section 11.6 of Numerical Recipes in C: The Art of Scientific Computing (Second Edition), published by Cambridge University Press, and is used by permission.

Calling Sequence

Result = HQR( A )

Arguments

A

An n by n upper Hessenberg array. Typically, A would be an array resulting from an application of ELMHES.

Keywords

DOUBLE

Set this keyword to force the computation to be done in double-precision arithmetic.

COLUMN

Set this keyword if the input array A is in column-major format (composed of column vectors) rather than in row-major format (composed of row vectors).

Example

To compute the eigenvalues of a real, non-symmetric unbalanced array, first define the array A :

A = [[ 1.0, 2.0, 0.0, 0.0, 0.0], $

     [-2.0, 3.0, 0.0, 0.0, 0.0], $

     [ 3.0, 4.0, 50.0, 0.0, 0.0], $

     [-4.0, 5.0, -60.0, 7.0, 0.0], $

     [-5.0, 6.0, -70.0, 8.0, -9.0]]

hes = ELMHES(A) ; Compute the upper Hessenberg form of the array.

evals = HQR(hes) ; Compute the eigenvalues.

Sort the eigenvalues into ascending order based on their real components:

evals = evals(SORT(FLOAT(evals)))

PRINT, evals ; Print the result.

IDL prints:

  ( -9.00000, 0.00000)( 2.00000, -1.73205)

  (  2.00000, 1.73205)( 7.00000,  0.00000)

  ( 50.0000,  0.00000)

This is the exact solution vector to five-decimal accuracy.

See Also

EIGENVEC , ELMHES , TRIQL , TRIRED