library: libMatrix
#include "TMatrixDEigen.h"

TMatrixDEigen


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

class TMatrixDEigen

Inheritance Chart:
TMatrixDEigen

    protected:
static void MakeHessenBerg(TMatrixT& v, TVectorT& ortho, TMatrixT& H) static void MakeSchurr(TMatrixT& v, TVectorT& d, TVectorT& e, TMatrixT& H) static void Sort(TMatrixT& v, TVectorT& d, TVectorT& e) public:
TMatrixDEigen() TMatrixDEigen(const TMatrixT& a) TMatrixDEigen(const TMatrixDEigen& another) virtual ~TMatrixDEigen() static TClass* Class() const TMatrixT GetEigenValues() const const TVectorT& GetEigenValuesIm() const const TVectorT& GetEigenValuesRe() const const TMatrixT& 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:
TMatrixT fEigenVectors Eigen-vectors of matrix TVectorT fEigenValuesRe Eigen-values TVectorT 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 TMatrixT &a)

TMatrixDEigen(const TMatrixDEigen &another)

void MakeHessenBerg(TMatrixT &v,TVectorT &ortho,TMatrixT &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(TMatrixT &v,TVectorT &d,TVectorT &e,TMatrixT &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(TMatrixT &v,TVectorT &d,TVectorT &e)
 Sort eigenvalues and corresponding vectors in descending order of Re^2+Im^2
 of the complex eigenvalues .

const TMatrixT 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 TMatrixT& GetEigenVectors() const
        const TVectorT& GetEigenValuesRe() const
        const TVectorT& 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.