Chapter Contents Previous Next
 Language Reference

## EIGEN Call

computes eigenvalues and eigenvectors

CALL EIGEN( eigenvalues, eigenvectors, A) <VECL="vl">;

where A is an arbitrary square numeric matrix for which eigenvalues and eigenvectors are to be calculated.

The EIGEN call returns the following values:
eigenvalues
a matrix to contain the eigenvalues of the input matrix.
eigenvectors
names a matrix to contain the right eigenvectors of the input matrix.
vl
is an optional n ×n matrix containing the left eigenvectors of A in the same manner that eigenvectors contains the right eigenvectors.

The EIGEN subroutine computes eigenvalues, a matrix containing the eigenvalues of A arranged in descending order. If A is symmetric, eigenvalues in the n ×1 vector containing the n real eigenvalues of A. If A is not symmetric (as determined by the criterion described below) eigenvalues is an n ×2 matrix containing the eigenvalues of the n ×n matrix A. The first column of A contains the real parts, Re(, and the second column contains the imaginary parts Im.Each row represents one eigenvalue, .Complex conjugate eigenvalues, Re,are stored in standard order; that is, the eigenvalue of the pair with a positive imaginary part is followed by the eigenvalue of the pair with the negative imaginary part.

The EIGEN subroutine also computes eigenvectors, a matrix. If A is symmetric, then eigenvectors has orthonormal column eigenvectors of A arranged so that the matrices correspond; that is, the first column of eigenvectors is the eigenvector corresponding to the largest eigenvalue, and so forth. If A is not symmetric, then eigenvectors is an n ×n matrix containing the right eigenvectors of A. If the eigenvalue in row i of eigenvalues is real, then column i of eigenvectors contains the corresponding real eigenvector. If rows i and i+1 of eigenvalues contain complex conjugate eigenvalues Re,then columns i and i+1 of eigenvectors contain the real, v, and imaginary, , parts, respectively, of the two corresponding eigenvectors .

The eigenvalues of a matrix A are the roots of the characteristic polynomial, which is defined as p(z) = det(zI- A). The spectrum, denoted by , is the set of eigenvalues of the matrix A. If , then .

The trace of A is defined by
and tr.

An eigenvector is a nonzero vector, x, that satisfies for . Right eigenvectors satisfy , and left eigenvectors satisfy .

The following are properties of the unsymmetric real eigenvalue problem, in which the real matrix A is square but not necessarily symmetric:
• The eigenvalues of an unsymmetric matrix A can be complex. If A has a complex eigenvalue , then the conjugate complex value is also an eigenvalue of A.
• The right and left eigenvectors corresponding to a real eigenvalue of A are real. The right and left eigenvectors corresponding to conjugate complex eigenvalues of A are also conjugate complex.
• The left eigenvectors of A are the same as the complex conjugate right eigenvectors of A'.

The three routines, EIGEN, EIGVAL, and EIGVEC, use the following test of symmetry for a square argument matrix A:
1. Select the entry of A with the largest magnitude:
2. Multiply the value of amax with the square root of the machine precision . (The value of is the largest value stored in double precision that, when added to 1 in double precision, still results in 1.)
3. The matrix A is considered unsymmetric if there exists at least one pair of symmetric entries that differs in more than ,

If A is symmetric, the result of the statement
   call eigen(m,e,a);

has the properties
that is,
E' = inv(E)
so that
A = E* diag(M)*E'   .
The QL method is used to compute the eigenvalues (Wilkinson and Reinsch 1971).

In statistical applications, nonsymmetric matrices for which eigenvalues are desired are usually of the form E-1 H, where E and H are symmetric. The eigenvalues L and eigenvectors V of E-1H can be obtained by using the GENEIG subroutine or as follows:

   f=root(einv);
a=f*h*f';
call eigen(l,w,a);
v=f'*w;

The computation can be checked by forming the residuals:
   r=einv*h*v-v*diag(l);

The values in R should be of the order of round-off error.

 Chapter Contents Previous Next Top