An eigenvalue decomposition of a SymmetricMatrix A is a decomposition
A = V * D * V.t()
where V is an orthogonal matrix (type Matrix in Newmat)
and D is a DiagonalMatrix.
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
where A, S are of type SymmetricMatrix,
D is of type DiagonalMatrix and V is of type
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.