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 matrix
The 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.