An eigenvalue decomposition of a symmetric matrix A is a decomposition
A = V * D * V.t()where V is an orthogonal matrix and D is a diagonal matrix.
Eigenvalue analyses are used in a wide variety of engineering, statistical and other mathematical analyses.
The package includes two algorithms: Jacobi and Householder. The first is extremely reliable but much slower than the second.
The code is adapted from routines in Handbook for Automatic Computation, Vol II, Linear Algebra by Wilkinson and Reinsch, published by Springer Verlag.
Jacobi(A,D,S,V); // A, S symmetric; S is workspace, // S = A is OK; V is a matrix Jacobi(A,D); // A symmetric Jacobi(A,D,S); // A, S symmetric; S is workspace, // S = A is OK Jacobi(A,D,V); // A symmetric; V is a matrix EigenValues(A,D); // A symmetric EigenValues(A,D,S); // A, S symmetric; S is for back // transforming, S = A is OK EigenValues(A,D,V); // A symmetric; V is a matrixThe values of A are not changed unless A is also inserted as the third argument. If you need eigenvectors use one of the forms with matrix V. The eigenvectors are returned as the columns of V.