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

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.

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
 
TMatrixDEigenoperator= (const TMatrixDEigen &source)
 Assignment operator. More...
 

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

◆ 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.

◆ 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.

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:
x
Double_t x[n]
Definition: legend1.C:17
v
@ v
Definition: rootcling_impl.cxx:3635
b
#define b(i)
Definition: RSha256.hxx:100
a
auto * a
Definition: textangle.C:12
y
Double_t y[n]
Definition: legend1.C:17