The TRIQL procedure uses the QL algorithm with implicit shifts to determine the eigenvalues and eigenvectors of a real, symmetric, tridiagonal array. The routine TRIRED can be used to reduce a real, symmetric array to the tridiagonal form suitable for input to this procedure.

**Note: **If you are working with complex inputs, use the LA_TRIQL procedure instead.

## Examples

To compute eigenvalues and eigenvectors of a real, symmetric, tridiagonal array, begin with an array A representing a symmetric array:

; Create the array A:

A = [[ 3.0, 1.0, -4.0], $

[ 1.0, 3.0, -4.0], $

[-4.0, -4.0, 8.0]]

; Compute the tridiagonal form of A:

TRIRED, A, D, E

; Compute the eigenvalues (returned in vector D) and the

; eigenvectors (returned in the rows of the array A):

TRIQL, D, E, A

; Print eigenvalues:

PRINT, 'Eigenvalues:'

PRINT, D

; Print eigenvectors:

PRINT, 'Eigenvectors:'

PRINT, A

IDL prints:

Eigenvalues:

2.00000 4.76837e-7 12.0000

Eigenvectors:

0.707107 -0.707107 0.00000

-0.577350 -0.577350 -0.577350

-0.408248 -0.408248 0.816497

The exact eigenvalues are:

[2.0, 0.0, 12.0]

The exact eigenvectors are:

[ 1.0/sqrt(2.0), -1.0/sqrt(2.0), 0.0/sqrt(2.0)],

[-1.0/sqrt(3.0), -1.0/sqrt(3.0), -1.0/sqrt(3.0)],

[-1.0/sqrt(6.0), -1.0/sqrt(6.0), 2.0/sqrt(6.0)]

## Syntax

TRIQL, *D*, *E*, *A* [, /DOUBLE]

## Arguments

### D

On input, this argument should be an *n*-element vector containing the diagonal elements of the array being analyzed. On output, *D* contains the eigenvalues.

### E

An *n*-element vector containing the off-diagonal elements of the array. *E*_{0} is arbitrary. On output, this parameter is destroyed.

### A

A named variable that returns the *n* eigenvectors. If the eigenvectors of a tridiagonal array are desired, *A *should be input as an identity array. If the eigenvectors of an array that has been reduced by TRIRED are desired, *A *is input as the array *Q* output by TRIRED.

## Keywords

### DOUBLE

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

## Version History

4.0 |
Introduced |

## Resources and References

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

## See Also

EIGENVEC, ELMHES, HQR, LA_TRIQL, TRIRED

## Notes

This page has no user notes yet. Be the first one!