library: libMatrix #include "TMatrixDEigen.h" |
TMatrixDEigen
class description - source file - inheritance tree (.pdf)
protected:
static void MakeHessenBerg(TMatrixD& v, TVectorD& ortho, TMatrixD& H)
static void MakeSchurr(TMatrixD& v, TVectorD& d, TVectorD& e, TMatrixD& H)
static void Sort(TMatrixD& v, TVectorD& d, TVectorD& e)
public:
TMatrixDEigen()
TMatrixDEigen(const TMatrixD& a)
TMatrixDEigen(const TMatrixDEigen& another)
virtual ~TMatrixDEigen()
static TClass* Class()
const TMatrixD GetEigenValues() const
const TVectorD& GetEigenValuesIm() const
const TVectorD& GetEigenValuesRe() const
const TMatrixD& GetEigenVectors() const
virtual TClass* IsA() const
TMatrixDEigen& operator=(const TMatrixDEigen& source)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
protected:
TMatrixD fEigenVectors Eigen-vectors of matrix
TVectorD fEigenValuesRe Eigen-values
TVectorD fEigenValuesIm Eigen-values
public:
static const enum TMatrixDEigen:: kWorkMax
TMatrixDEigen
Eigenvalues and eigenvectors of a real matrix.
If A is not symmetric, then the eigenvalue matrix D is block
diagonal with the real eigenvalues in 1-by-1 blocks and any complex
eigenvalues, a + i*b, in 2-by-2 blocks, [a, b; -b, a]. That is, if
the complex eigenvalues look like
u + iv . . . . .
. u - iv . . . .
. . a + ib . . .
. . . a - ib . .
. . . . x .
. . . . . y
then D looks like
u v . . . .
-v u . . . .
. . a b . .
. . -b a . .
. . . . x .
. . . . . y
This keeps V a real matrix in both symmetric and non-symmetric
cases, and A*V = V*D.
TMatrixDEigen(const TMatrixD &a)
TMatrixDEigen(const TMatrixDEigen &another)
void MakeHessenBerg(TMatrixD &v,TVectorD &ortho,TMatrixD &H)
Nonsymmetric reduction to Hessenberg form.
This is derived from the Algol procedures orthes and ortran, by Martin and Wilkinson,
Handbook for Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
Fortran subroutines in EISPACK.
void MakeSchurr(TMatrixD &v,TVectorD &d,TVectorD &e,TMatrixD &H)
Nonsymmetric reduction from Hessenberg to real Schur form.
This is derived from the Algol procedure hqr2, by Martin and Wilkinson,
Handbook for Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
Fortran subroutine in EISPACK.
void Sort(TMatrixD &v,TVectorD &d,TVectorD &e)
Sort eigenvalues and corresponding vectors in descending order of Re^2+Im^2
of the complex eigenvalues .
const TMatrixD GetEigenValues() const
Computes the block diagonal eigenvalue matrix.
If the original matrix A is not symmetric, then the eigenvalue
matrix D is block diagonal with the real eigenvalues in 1-by-1
blocks and any complex eigenvalues,
a + i*b, in 2-by-2 blocks, [a, b; -b, a].
That is, if the complex eigenvalues look like
u + iv . . . . .
. u - iv . . . .
. . a + ib . . .
. . . a - ib . .
. . . . x .
. . . . . y
then D looks like
u v . . . .
-v u . . . .
. . a b . .
. . -b a . .
. . . . x .
. . . . . y
This keeps V a real matrix in both symmetric and non-symmetric
cases, and A*V = V*D.
Indexing:
If matrix A has the index/shape (rowLwb,rowUpb,rowLwb,rowUpb)
each eigen-vector must have the shape (rowLwb,rowUpb) .
For convinience, the column index of the eigen-vector matrix
also runs from rowLwb to rowUpb so that the returned matrix
has also index/shape (rowLwb,rowUpb,rowLwb,rowUpb) .
Inline Functions
void ~TMatrixDEigen()
TMatrixDEigen TMatrixDEigen(const TMatrixDEigen& another)
const TMatrixD& GetEigenVectors() const
const TVectorD& GetEigenValuesRe() const
const TVectorD& GetEigenValuesIm() const
TMatrixDEigen& operator=(const TMatrixDEigen& source)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
Last update: root/matrix:$Name: $:$Id: TMatrixDEigen.cxx,v 1.11 2005/09/02 11:04:45 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
ROOT page - Class index - Class Hierarchy - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.