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
-element complex vector.
HQR is based on the routine
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.
Result = HQR(
upper Hessenberg array. Typically,
would be an array resulting from an application of ELMHES.
Set this keyword to force the computation to be done in double-precision arithmetic.
Set this keyword if the input array
is in column-major format (composed of column vectors) rather than in row-major format (composed of row vectors).
To compute the eigenvalues of a real, non-symmetric unbalanced array, first define the array
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)
evals = HQR(hes)
Sort the eigenvalues into ascending order based on their real components:
evals = evals(SORT(FLOAT(evals)))
( -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.