Logo ROOT  
Reference Guide
TMatrixDEigen Class Reference

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
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
TArc a
Definition: textangle.C:12

then D looks like

u v . . . .
-v u . . . .
. . a b . .
. . -b a . .
. . . . x .
. . . . . y
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t b

This keeps V a real matrix in both symmetric and non-symmetric cases, and A*V = V*D.

Definition at line 26 of file TMatrixDEigen.h.

Public Types

enum  { kWorkMax = 100 }
 

Public Member Functions

 TMatrixDEigen ()
 
 TMatrixDEigen (const TMatrixD &a)
 Constructor for eigen-problem of matrix A . More...
 
 TMatrixDEigen (const TMatrixDEigen &another)
 Copy constructor. More...
 
virtual ~TMatrixDEigen ()
 
const TMatrixD GetEigenValues () const
 Computes the block diagonal eigenvalue matrix. More...
 
const TVectorDGetEigenValuesIm () const
 
const TVectorDGetEigenValuesRe () const
 
const TMatrixDGetEigenVectors () const
 
virtual TClassIsA () const
 
TMatrixDEigenoperator= (const TMatrixDEigen &source)
 Assignment operator. More...
 
virtual void Streamer (TBuffer &)
 
void StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b)
 

Static Public Member Functions

static TClassClass ()
 
static const char * Class_Name ()
 
static constexpr Version_t Class_Version ()
 
static const char * DeclFileName ()
 

Static Protected Member Functions

static void MakeHessenBerg (TMatrixD &v, TVectorD &ortho, TMatrixD &H)
 Nonsymmetric reduction to Hessenberg form. More...
 
static void MakeSchurr (TMatrixD &v, TVectorD &d, TVectorD &e, TMatrixD &H)
 Nonsymmetric reduction from Hessenberg to real Schur form. More...
 
static 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 . More...
 

Protected Attributes

TVectorD fEigenValuesIm
 
TVectorD fEigenValuesRe
 
TMatrixD fEigenVectors
 

#include <TMatrixDEigen.h>

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kWorkMax 

Definition at line 40 of file TMatrixDEigen.h.

Constructor & Destructor Documentation

◆ TMatrixDEigen() [1/3]

TMatrixDEigen::TMatrixDEigen ( )
inline

Definition at line 42 of file TMatrixDEigen.h.

◆ TMatrixDEigen() [2/3]

TMatrixDEigen::TMatrixDEigen ( const TMatrixD a)

Constructor for eigen-problem of matrix A .

Definition at line 57 of file TMatrixDEigen.cxx.

◆ TMatrixDEigen() [3/3]

TMatrixDEigen::TMatrixDEigen ( const TMatrixDEigen another)

Copy constructor.

Definition at line 98 of file TMatrixDEigen.cxx.

◆ ~TMatrixDEigen()

virtual TMatrixDEigen::~TMatrixDEigen ( )
inlinevirtual

Definition at line 46 of file TMatrixDEigen.h.

Member Function Documentation

◆ Class()

static TClass * TMatrixDEigen::Class ( )
static
Returns
TClass describing this class

◆ Class_Name()

static const char * TMatrixDEigen::Class_Name ( )
static
Returns
Name of this class

◆ Class_Version()

static constexpr Version_t TMatrixDEigen::Class_Version ( )
inlinestaticconstexpr
Returns
Version of this class

Definition at line 62 of file TMatrixDEigen.h.

◆ DeclFileName()

static const char * TMatrixDEigen::DeclFileName ( )
inlinestatic
Returns
Name of the file containing the class declaration

Definition at line 62 of file TMatrixDEigen.h.

◆ GetEigenValues()

const TMatrixD TMatrixDEigen::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 convenience, 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) .

Definition at line 792 of file TMatrixDEigen.cxx.

◆ GetEigenValuesIm()

const TVectorD & TMatrixDEigen::GetEigenValuesIm ( ) const
inline

Definition at line 57 of file TMatrixDEigen.h.

◆ GetEigenValuesRe()

const TVectorD & TMatrixDEigen::GetEigenValuesRe ( ) const
inline

Definition at line 56 of file TMatrixDEigen.h.

◆ GetEigenVectors()

const TMatrixD & TMatrixDEigen::GetEigenVectors ( ) const
inline

Definition at line 55 of file TMatrixDEigen.h.

◆ IsA()

virtual TClass * TMatrixDEigen::IsA ( ) const
inlinevirtual
Returns
TClass describing current object

Definition at line 62 of file TMatrixDEigen.h.

◆ MakeHessenBerg()

void TMatrixDEigen::MakeHessenBerg ( TMatrixD v,
TVectorD ortho,
TMatrixD H 
)
staticprotected

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.

Definition at line 109 of file TMatrixDEigen.cxx.

◆ MakeSchurr()

void TMatrixDEigen::MakeSchurr ( TMatrixD v,
TVectorD d,
TVectorD e,
TMatrixD H 
)
staticprotected

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.

Definition at line 234 of file TMatrixDEigen.cxx.

◆ operator=()

TMatrixDEigen & TMatrixDEigen::operator= ( const TMatrixDEigen source)

Assignment operator.

Definition at line 740 of file TMatrixDEigen.cxx.

◆ Sort()

void TMatrixDEigen::Sort ( TMatrixD v,
TVectorD d,
TVectorD e 
)
staticprotected

Sort eigenvalues and corresponding vectors in descending order of Re^2+Im^2 of the complex eigenvalues .

Definition at line 699 of file TMatrixDEigen.cxx.

◆ Streamer()

virtual void TMatrixDEigen::Streamer ( TBuffer )
virtual

◆ StreamerNVirtual()

void TMatrixDEigen::StreamerNVirtual ( TBuffer ClassDef_StreamerNVirtual_b)
inline

Definition at line 62 of file TMatrixDEigen.h.

Member Data Documentation

◆ fEigenValuesIm

TVectorD TMatrixDEigen::fEigenValuesIm
protected

Definition at line 36 of file TMatrixDEigen.h.

◆ fEigenValuesRe

TVectorD TMatrixDEigen::fEigenValuesRe
protected

Definition at line 35 of file TMatrixDEigen.h.

◆ fEigenVectors

TMatrixD TMatrixDEigen::fEigenVectors
protected

Definition at line 34 of file TMatrixDEigen.h.

Libraries for TMatrixDEigen:
[legend]

The documentation for this class was generated from the following files: