IGLib  1.7.2
The IGLib base library EXTENDED - with other lilbraries and applications.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
DotNetMatrix.EigenvalueDecomposition Class Reference

Eigenvalues and eigenvectors of a real matrix. If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. I.e. A = V.Multiply(D.Multiply(V.Transpose())) and V.Multiply(V.Transpose()) equals the identity 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, lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The columns of V represent the eigenvectors in the sense that A*V = V*D, i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*Inverse(V) depends upon V.cond(). More...

+ Inheritance diagram for DotNetMatrix.EigenvalueDecomposition:
+ Collaboration diagram for DotNetMatrix.EigenvalueDecomposition:

Public Member Functions

 EigenvalueDecomposition (GeneralMatrix Arg)
 Check for symmetry, then construct the eigenvalue decomposition More...
 
virtual GeneralMatrix GetV ()
 Return the eigenvector matrix More...
 
 EigenvalueDecomposition (GeneralMatrix Arg)
 Check for symmetry, then construct the eigenvalue decomposition More...
 
virtual GeneralMatrix GetV ()
 Return the eigenvector matrix More...
 

Properties

virtual double[] RealEigenvalues [get]
 Return the real parts of the eigenvalues More...
 
virtual double[] ImagEigenvalues [get]
 Return the imaginary parts of the eigenvalues More...
 
virtual GeneralMatrix D [get]
 Return the block diagonal eigenvalue matrix More...
 

Private Member Functions

void tred2 ()
 
void tql2 ()
 
void orthes ()
 
void cdiv (double xr, double xi, double yr, double yi)
 
void hqr2 ()
 
void ISerializable. GetObjectData (SerializationInfo info, StreamingContext context)
 
void tred2 ()
 
void tql2 ()
 
void orthes ()
 
void cdiv (double xr, double xi, double yr, double yi)
 
void hqr2 ()
 
void ISerializable. GetObjectData (SerializationInfo info, StreamingContext context)
 

Private Attributes

int n
 Row and column dimension (square matrix). matrix dimension. More...
 
bool issymmetric
 Symmetry flag. internal symmetry flag. More...
 
double[] d
 Arrays for internal storage of eigenvalues. internal storage of eigenvalues. More...
 
double[] e
 
double[][] V
 Array for internal storage of eigenvectors. internal storage of eigenvectors. More...
 
double[][] H
 Array for internal storage of nonsymmetric Hessenberg form. internal storage of nonsymmetric Hessenberg form. More...
 
double[] ort
 Working storage for nonsymmetric algorithm. working storage for nonsymmetric algorithm. More...
 
double cdivr
 
double cdivi
 

Detailed Description

Eigenvalues and eigenvectors of a real matrix. If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. I.e. A = V.Multiply(D.Multiply(V.Transpose())) and V.Multiply(V.Transpose()) equals the identity 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, lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The columns of V represent the eigenvectors in the sense that A*V = V*D, i.e. A.Multiply(V) equals V.Multiply(D). The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*Inverse(V) depends upon V.cond().

Constructor & Destructor Documentation

DotNetMatrix.EigenvalueDecomposition.EigenvalueDecomposition ( GeneralMatrix  Arg)
inline
DotNetMatrix.EigenvalueDecomposition.EigenvalueDecomposition ( GeneralMatrix  Arg)
inline

Member Function Documentation

void DotNetMatrix.EigenvalueDecomposition.tred2 ( )
inlineprivate
void DotNetMatrix.EigenvalueDecomposition.tql2 ( )
inlineprivate
void DotNetMatrix.EigenvalueDecomposition.orthes ( )
inlineprivate
void DotNetMatrix.EigenvalueDecomposition.cdiv ( double  xr,
double  xi,
double  yr,
double  yi 
)
inlineprivate
virtual GeneralMatrix DotNetMatrix.EigenvalueDecomposition.GetV ( )
inlinevirtual

Return the eigenvector matrix

Returns
V

Referenced by DotNetMatrix.test.TestMatrix.Main().

void ISerializable. DotNetMatrix.EigenvalueDecomposition.GetObjectData ( SerializationInfo  info,
StreamingContext  context 
)
inlineprivate
void DotNetMatrix.EigenvalueDecomposition.tred2 ( )
inlineprivate
void DotNetMatrix.EigenvalueDecomposition.tql2 ( )
inlineprivate
void DotNetMatrix.EigenvalueDecomposition.orthes ( )
inlineprivate
void DotNetMatrix.EigenvalueDecomposition.cdiv ( double  xr,
double  xi,
double  yr,
double  yi 
)
inlineprivate
virtual GeneralMatrix DotNetMatrix.EigenvalueDecomposition.GetV ( )
inlinevirtual

Return the eigenvector matrix

Returns
V
void ISerializable. DotNetMatrix.EigenvalueDecomposition.GetObjectData ( SerializationInfo  info,
StreamingContext  context 
)
inlineprivate

Member Data Documentation

bool DotNetMatrix.EigenvalueDecomposition.issymmetric
private

Symmetry flag. internal symmetry flag.

double [] DotNetMatrix.EigenvalueDecomposition.d
private

Arrays for internal storage of eigenvalues. internal storage of eigenvalues.

Referenced by DotNetMatrix.EigenvalueDecomposition.cdiv().

double [] DotNetMatrix.EigenvalueDecomposition.e
private
double [][] DotNetMatrix.EigenvalueDecomposition.V
private

Array for internal storage of eigenvectors. internal storage of eigenvectors.

double [][] DotNetMatrix.EigenvalueDecomposition.H
private

Array for internal storage of nonsymmetric Hessenberg form. internal storage of nonsymmetric Hessenberg form.

double [] DotNetMatrix.EigenvalueDecomposition.ort
private

Working storage for nonsymmetric algorithm. working storage for nonsymmetric algorithm.

double DotNetMatrix.EigenvalueDecomposition.cdivr
private
double DotNetMatrix.EigenvalueDecomposition.cdivi
private

Property Documentation

virtual double [] DotNetMatrix.EigenvalueDecomposition.RealEigenvalues
get

Return the real parts of the eigenvalues

Returns
real(diag(D))

Referenced by DotNetMatrix.examples.MagicSquareExample.Main().

virtual double [] DotNetMatrix.EigenvalueDecomposition.ImagEigenvalues
get

Return the imaginary parts of the eigenvalues

Returns
imag(diag(D))
GeneralMatrix DotNetMatrix.EigenvalueDecomposition.D
get

Return the block diagonal eigenvalue matrix

Returns
D

Referenced by DotNetMatrix.test.TestMatrix.Main().


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