ROOT   Reference Guide
Searching...
No Matches
TMatrixDSymEigen.h
Go to the documentation of this file.
1// @(#)root/matrix:$Id$
2// Authors: Fons Rademakers, Eddy Offermann Dec 2003
3
4/*************************************************************************
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. * 9 * For the list of contributors see$ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TMatrixDSymEigen
13#define ROOT_TMatrixDSymEigen
14
15//////////////////////////////////////////////////////////////////////////
16// //
17// TMatrixDSymEigen //
18// //
19// Eigenvalues and eigenvectors of a real symmetric matrix. //
20// //
21//////////////////////////////////////////////////////////////////////////
22
23#include "TMatrixD.h"
24#include "TMatrixDSym.h"
25#include "TVectorD.h"
26
28{
29protected :
30
31 static void MakeTridiagonal (TMatrixD &v,TVectorD &d,TVectorD &e);
33
34 TMatrixD fEigenVectors; // Eigen-vectors of matrix
35 TVectorD fEigenValues; // Eigen-values
36
37public :
38
39 enum {kWorkMax = 100}; // size of work array
40
43 TMatrixDSymEigen(const TMatrixDSymEigen &another);
44 virtual ~TMatrixDSymEigen() {}
45
46// If matrix A has shape (rowLwb,rowUpb,rowLwb,rowUpb), then each eigen-vector
47// must have an index running between (rowLwb,rowUpb) .
48// For convenience, the column index of the eigen-vector matrix
49// also runs from rowLwb to rowUpb so that the returned matrix
50// has also index/shape (rowLwb,rowUpb,rowLwb,rowUpb) .
51// The same is true for the eigen-value vector .
52
53 const TMatrixD &GetEigenVectors() const { return fEigenVectors; }
54 const TVectorD &GetEigenValues () const { return fEigenValues; }
55
57
58 ClassDef(TMatrixDSymEigen,1) // Eigen-Vectors/Values of a Matrix
59};
60#endif
#define d(i)
Definition RSha256.hxx:102
#define a(i)
Definition RSha256.hxx:99
#define e(i)
Definition RSha256.hxx:103
#define ClassDef(name, id)
Definition Rtypes.h:325
TMatrixDSymEigen.
static void MakeEigenVectors(TMatrixD &v, TVectorD &d, TVectorD &e)
Symmetric tridiagonal QL algorithm.
static void MakeTridiagonal(TMatrixD &v, TVectorD &d, TVectorD &e)
This is derived from the Algol procedures tred2 by Bowdler, Martin, Reinsch, and Wilkinson,...
const TVectorD & GetEigenValues() const
TMatrixDSymEigen & operator=(const TMatrixDSymEigen &source)
Assignment operator.
const TMatrixD & GetEigenVectors() const
virtual ~TMatrixDSymEigen()