IMSL C# Numerical Library

SymEigen Class

Computes the eigenvalues and eigenvectors of a real symmetric matrix.

For a list of all members of this type, see SymEigen Members.

System.Object
   Imsl.Math.SymEigen

public class SymEigen

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

Orthogonal similarity transformations are used to reduce the matrix to an equivalent symmetric tridiagonal matrix. These transformations are accumulated. An implicit rational QR algorithm is used to compute the eigenvalues of this tridiagonal matrix. The eigenvectors are computed using the eigenvalues as perfect shifts, Parlett (1980, pages 169, 172). The reduction routine is based on the EISPACK routine TRED2. See Smith et al. (1976) for the EISPACK routines. Further details, some timing data, and credits are given in Hanson et al. (1990).

Let M = the number of eigenvalues, \lambda = the array of eigenvalues, and x_j is the associated eigenvector with jth eigenvalue.

Also, let \varepsilon be the machine precision. The performance index, \tau, is defined to be

\tau  = \mathop{\max}\limits_{1 \le j \le M} 
            \frac{\left\| Ax_j-\lambda _j x_j \right\|_1 }{10N\varepsilon \left\| A 
            \right\|_1 \left\| x_j \right\|_1}

While the exact value of \tau is highly machine dependent, the performance of SymEigen is considered excellent if \tau\lt 1, good if 1 \le 100, and poor if \tau> 100. The performance index was first developed by the EISPACK project at Argonne National Laboratory; see Smith et al. (1976, pages 124-125).

Requirements

Namespace: Imsl.Math

Assembly: ImslCS (in ImslCS.dll)

See Also

SymEigen Members | Imsl.Math Namespace | Example