ROOT   6.10/09 Reference Guide
TMatrixDEigen Class Reference

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>

## ◆ anonymous enum

 anonymous enum
Enumerator
kWorkMax

Definition at line 40 of file TMatrixDEigen.h.

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

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

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

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