core/vnl/algo/vnl_symmetric_eigensystem.h File Reference


Detailed Description

Find eigenvalues of a symmetric matrix.

vnl_symmetric_eigensystem_compute() solves the eigenproblem $A x = \lambda x$, with $A$ symmetric. The resulting eigenvectors and values are sorted in increasing order so V.column(0) is the eigenvector corresponding to the smallest eigenvalue.

As a matrix decomposition, this is $A = V D V^t$

Uses the EISPACK routine RS, which in turn calls TRED2 to reduce A to tridiagonal form, followed by TQL2, to find the eigensystem. This is summarized in Golub and van Loan, .2. The following are the original subroutine headers:

Remarks:
TRED2 is a translation of the Algol procedure tred2, Num. Math. 11, 181-195(1968) by Martin, Reinsch, and Wilkinson. Handbook for Auto. Comp., Vol.ii-Linear Algebra, 212-226(1971).

This subroutine reduces a real symmetric matrix to a symmetric tridiagonal matrix using and accumulating orthogonal similarity transformations.

TQL2 is a translation of the Algol procedure tql2, Num. Math. 11, 293-306(1968) by Bowdler, Martin, Reinsch, and Wilkinson. Handbook for Auto. Comp., Vol.ii-Linear Algebra, 227-240(1971).

This subroutine finds the eigenvalues and eigenvectors of a symmetric tridiagonal matrix by the QL method. the eigenvectors of a full symmetric matrix can also be found if tred2 has been used to reduce this full matrix to tridiagonal form.

Author:
Andrew W. Fitzgibbon, Oxford RRG
Date:
29 Aug 96
    Modifications
     fsm, 5 March 2000: templated
     dac (Manchester) 28/03/2001: tidied up documentation
     Feb.2002 - Peter Vanroose - brief doxygen comment placed on single line
     Jan.2003 - Peter Vanroose - added missing implementation for solve(b,x)
   

Definition in file vnl_symmetric_eigensystem.h.

#include <vnl/vnl_matrix.h>
#include <vnl/vnl_diag_matrix.h>

Go to the source code of this file.


Classes

class  vnl_symmetric_eigensystem< T >
 Computes and stores the eigensystem decomposition of a symmetric matrix. More...

Functions

void vnl_symmetric_eigensystem_compute_eigenvals (double M11, double M12, double M13, double M22, double M23, double M33, double &l1, double &l2, double &l3)
 Find eigenvalues of a symmetric 3x3 matrix.
bool vnl_symmetric_eigensystem_compute (vnl_matrix< float > const &A, vnl_matrix< float > &V, vnl_vector< float > &D)
 Find eigenvalues of a symmetric matrix.
bool vnl_symmetric_eigensystem_compute (vnl_matrix< double > const &A, vnl_matrix< double > &V, vnl_vector< double > &D)
 Find eigenvalues of a symmetric matrix.

Function Documentation

bool vnl_symmetric_eigensystem_compute ( vnl_matrix< double > const &  A,
vnl_matrix< double > &  V,
vnl_vector< double > &  D 
)

Find eigenvalues of a symmetric matrix.

Definition at line 110 of file vnl_symmetric_eigensystem.cxx.

bool vnl_symmetric_eigensystem_compute ( vnl_matrix< float > const &  A,
vnl_matrix< float > &  V,
vnl_vector< float > &  D 
)

Find eigenvalues of a symmetric matrix.

Definition at line 96 of file vnl_symmetric_eigensystem.cxx.

void vnl_symmetric_eigensystem_compute_eigenvals ( double  M11,
double  M12,
double  M13,
double  M22,
double  M23,
double  M33,
double &  l1,
double &  l2,
double &  l3 
)

Find eigenvalues of a symmetric 3x3 matrix.

Eigenvalues will be returned so that l1 <= l2 <= l3.

   Matrix is   M11  M12  M13
               M12  M22  M23
               M13  M23  M33
   

   Matrix is   M11  M12  M13
               M12  M22  M23
               M13  M23  M33
   

Definition at line 26 of file vnl_symmetric_eigensystem.cxx.


Generated on Sun Nov 22 06:17:17 2009 for core/vnl by  doxygen 1.5.5