library: libMatrix
#include "TMatrixDEigen.h"

TMatrixDEigen


class description - source file - inheritance tree (.pdf)

class TMatrixDEigen

Inheritance Chart:
TMatrixDEigen

    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)

Data Members


    protected:
TMatrixD fEigenVectors Eigen-vectors of matrix TVectorD fEigenValuesRe Eigen-values TVectorD fEigenValuesIm Eigen-values public:
static const enum TMatrixDEigen:: kWorkMax

Class Description

                                                                      
 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.