ROOT
6.13/01
Reference Guide
math
matrix
inc
TMatrixDSymEigen.h
Go to the documentation of this file.
1
// @(#)root/matrix:$Id$
2
// Authors: Fons Rademakers, Eddy Offermann Dec 2003
3
4
/*************************************************************************
5
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6
* All rights reserved. *
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
27
class
TMatrixDSymEigen
28
{
29
protected :
30
31
static
void
MakeTridiagonal
(
TMatrixD
&
v
,
TVectorD
&d,
TVectorD
&
e
);
32
static
void
MakeEigenVectors
(
TMatrixD
&v,
TVectorD
&d,
TVectorD
&e);
33
34
TMatrixD
fEigenVectors
;
// Eigen-vectors of matrix
35
TVectorD
fEigenValues
;
// Eigen-values
36
37
public :
38
39
enum
{
kWorkMax
= 100};
// size of work array
40
41
TMatrixDSymEigen
() : fEigenVectors(), fEigenValues() {};
42
TMatrixDSymEigen
(
const
TMatrixDSym
&a);
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
56
TMatrixDSymEigen
&
operator=
(
const
TMatrixDSymEigen
&source);
57
58
ClassDef(
TMatrixDSymEigen
,1)
// Eigen-Vectors/Values of a Matrix
59
};
60
#endif
TMatrixDSymEigen::MakeEigenVectors
static void MakeEigenVectors(TMatrixD &v, TVectorD &d, TVectorD &e)
Symmetric tridiagonal QL algorithm.
Definition:
TMatrixDSymEigen.cxx:201
TMatrixDSymEigen::TMatrixDSymEigen
TMatrixDSymEigen()
Definition:
TMatrixDSymEigen.h:41
TVectorT< Double_t >
TMatrixDSymEigen::operator=
TMatrixDSymEigen & operator=(const TMatrixDSymEigen &source)
Assignment operator.
Definition:
TMatrixDSymEigen.cxx:328
TMatrixDSymEigen
TMatrixDSymEigen.
Definition:
TMatrixDSymEigen.h:27
TMatrixT< Double_t >
TVectorD.h
TMatrixDSym.h
TMatrixTSym< Double_t >
TMatrixDSymEigen::kWorkMax
Definition:
TMatrixDSymEigen.h:39
v
SVector< double, 2 > v
Definition:
Dict.h:5
TMatrixDSymEigen::GetEigenVectors
const TMatrixD & GetEigenVectors() const
Definition:
TMatrixDSymEigen.h:53
TMatrixDSymEigen::GetEigenValues
const TVectorD & GetEigenValues() const
Definition:
TMatrixDSymEigen.h:54
TMatrixDSymEigen::MakeTridiagonal
static void MakeTridiagonal(TMatrixD &v, TVectorD &d, TVectorD &e)
This is derived from the Algol procedures tred2 by Bowdler, Martin, Reinsch, and Wilkinson, Handbook for Auto.
Definition:
TMatrixDSymEigen.cxx:71
e
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
Definition:
TRolke.cxx:630
TMatrixDSymEigen::fEigenValues
TVectorD fEigenValues
Definition:
TMatrixDSymEigen.h:35
TMatrixD.h
TMatrixDSymEigen::fEigenVectors
TMatrixD fEigenVectors
Definition:
TMatrixDSymEigen.h:34
TMatrixDSymEigen::~TMatrixDSymEigen
virtual ~TMatrixDSymEigen()
Definition:
TMatrixDSymEigen.h:44