IGLib  1.7.2
The IGLib base library for development of numerical, technical and business applications.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
IG.Num.EigenValueDecomposition Class Reference

Eigenvalue decomposition of a matrix. More...

+ Inheritance diagram for IG.Num.EigenValueDecomposition:
+ Collaboration diagram for IG.Num.EigenValueDecomposition:

Public Member Functions

 EigenValueDecomposition (Matrix_MathNetNumerics A)
 Constructor. More...
 
 EigenValueDecomposition (Matrix A)
 Constructor. More...
 
void GetProduct (ref IMatrix product)
 Calculates the product (i.e. the original matrix of coefficients of a linear system of equations) of the current decomposition, and stores it to the specified matrix. More...
 
IMatrix GetProduct ()
 Calculates and returns the product (i.e. the original matrix of coefficients of a linear system of equations) of the current decomposition. More...
 
void Inverse (ref IMatrix inv)
 Calculates inverse of the decomposed matrix represented by the current object, and stores it in the specified matrix. More...
 
IMatrix Inverse ()
 Calculates and returns inverse of the decomposed matrix represented by the current object. More...
 
- Public Member Functions inherited from IG.Num.LinearSolverBase
virtual void Solve (IMatrix B, ref IMatrix X)
 Solves A*X = B (a set of linear systems of equations), where B is the matrix whose colums are right-hand sides of equations to be solved. Solutions are stored to the specified matrix. More...
 
IMatrix Solve (IMatrix B)
 Solves A*X = B (a set of linear systems of equations), where B is the matrix whose colums are right-hand sides of equations to be solved, and returns a matrix whose columns are solutions of the specified systems of equations. More...
 
virtual void Solve (IVector b, ref IVector x)
 Solves a system of linear equations A*x=b, and stores the solution in the specified vector. More...
 
IVector Solve (IVector b)
 Solves a system of linear equations A*x=b, and returns the solution. More...
 
- Public Member Functions inherited from IG.Num.ILinearSolver
void Solve (IMatrix B, ref IMatrix X)
 Solves A*X = B (a set of linear systems of equations), where B is the matrix whose colums are right-hand sides of equations to be solved. Solutions are stored to the specified matrix. More...
 
IMatrix Solve (IMatrix B)
 Solves A*X = B (a set of linear systems of equations), where B is the matrix whose colums are right-hand sides of equations to be solved, and returns a matrix whose columns are solutions of the specified systems of equations. More...
 
void Solve (IVector b, ref IVector x)
 Solves a system of linear equations A*x=b, and stores the solution in the specified vector. More...
 
IVector Solve (IVector b)
 Solves a system of linear equations A*x=b, and returns the solution. More...
 

Protected Member Functions

override MatrixBase_MathNetNumerics SolveMathNetNumerics (IMatrix righthandSides)
 Solves systems of linear equations with the specified right-hand sides and the current matrix decomposition by using the Math.Net Numerics library, and returns the result in Math.Net matrix form. More...
 
override VectorBase_MathNetNumerics SolveMathNetNumerics (IVector rightHandSides)
 Solves the system of linear equations with the specified right-hand sides and the current matrix decomposition by using the Math.Net Numerics library, and returns the result in Math.Net matrix form. More...
 

Protected Attributes

double _determinant
 
bool _determinantCalculated = false
 
- Protected Attributes inherited from IG.Num.LinearSolverBase
MatrixBase_MathNetNumerics _matrixSolution_MathNetNumerics
 
Matrix_MathNetNumerics _matrixRighthandSides_MathNetNumerics
 
VectorBase_MathNetNumerics _vectorSolution_MathNetNumerics
 
Vector_MathNetNumerics _vectorRighthandSides_MathNetNumerics
 
IVector auxB = null
 
IVector auxX = null
 

Properties

bool IsNonSingular [get]
 Indicates whether the matrix of coefficients of a linear system is nonsingular. More...
 
Matrix Eigenvectors [get]
 Returns the right eigenvectors. More...
 
System.Numerics.Complex[] EigenValues [get]
 Returns the eigen values as a an array of complex numbers. More...
 
double Determinant [get]
 Returns the determinant. More...
 
- Properties inherited from IG.Num.LinearSolverBase
object Lock [get]
 This object's central lock object to be used by other object. Do not use this object for locking in class' methods, for this you should use InternalLock. More...
 
- Properties inherited from IG.Num.ILinearSolver
bool IsNonSingular [get]
 Indicates whether the matrix of coefficients of a linear system represented by the current decomposition object, is nonsingular. More...
 
- Properties inherited from IG.Lib.ILockable
object Lock [get]
 

Private Attributes

MatrixBase_MathNetNumerics _inverse
 

Detailed Description

Eigenvalue decomposition of a matrix.

Calculates eigenvectors and eigenvalues of a real matrix.

Objects of this class are immutable. Decomposition is calculated at initialization, and the decomposed matrix can not be replaced later.

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*D*V' and V*VT=I. 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.Condition().

$A Igor Feb09;

Constructor & Destructor Documentation

IG.Num.EigenValueDecomposition.EigenValueDecomposition ( Matrix_MathNetNumerics  A)
inline

Constructor.

Parameters
AMatrix to be decomposed.
IG.Num.EigenValueDecomposition.EigenValueDecomposition ( Matrix  A)
inline

Constructor.

Parameters
AMatrix to be decomposed.

Member Function Documentation

void IG.Num.EigenValueDecomposition.GetProduct ( ref IMatrix  product)
inline

Calculates the product (i.e. the original matrix of coefficients of a linear system of equations) of the current decomposition, and stores it to the specified matrix.

Parameters
productMatrix where re-calculated product of the decomposed matrix is stored.

Implements IG.Num.ILinearSolver.

References IG.Num.Matrix.Copy().

IMatrix IG.Num.EigenValueDecomposition.GetProduct ( )
inline

Calculates and returns the product (i.e. the original matrix of coefficients of a linear system of equations) of the current decomposition.

Implements IG.Num.ILinearSolver.

void IG.Num.EigenValueDecomposition.Inverse ( ref IMatrix  inv)
inline

Calculates inverse of the decomposed matrix represented by the current object, and stores it in the specified matrix.

Parameters
invMatrix where calculated inverse is stored.

Implements IG.Num.ILinearSolver.

References IG.Num.Matrix.Copy().

IMatrix IG.Num.EigenValueDecomposition.Inverse ( )
inline

Calculates and returns inverse of the decomposed matrix represented by the current object.

Implements IG.Num.ILinearSolver.

override MatrixBase_MathNetNumerics IG.Num.EigenValueDecomposition.SolveMathNetNumerics ( IMatrix  righthandSides)
inlineprotectedvirtual

Solves systems of linear equations with the specified right-hand sides and the current matrix decomposition by using the Math.Net Numerics library, and returns the result in Math.Net matrix form.

Parameters
righthandSidesMatrix that contains right-hand sides of the linear equations to be solved as its columns.
Returns
The Math.Net Numerics matrix whose columns contains solutions to the systems of linear equations whose right-hand sides are specified by yhe righthandSides parameter.

Reimplemented from IG.Num.LinearSolverBase.

References IG.Num.Matrix.Copy().

override VectorBase_MathNetNumerics IG.Num.EigenValueDecomposition.SolveMathNetNumerics ( IVector  rightHandSides)
inlineprotectedvirtual

Solves the system of linear equations with the specified right-hand sides and the current matrix decomposition by using the Math.Net Numerics library, and returns the result in Math.Net matrix form.

Parameters
rightHandSidesVector of right-hand sides of the linear equations to be solved.
Returns
The Math.Net Numerics vector whose columns contains solutions to the systems of linear equations whose right-hand sides are specified by yhe rightHandSides parameter.

Reimplemented from IG.Num.LinearSolverBase.

References IG.Num.VectorBase.Copy().

Member Data Documentation

double IG.Num.EigenValueDecomposition._determinant
protected
bool IG.Num.EigenValueDecomposition._determinantCalculated = false
protected
MatrixBase_MathNetNumerics IG.Num.EigenValueDecomposition._inverse
private

Property Documentation

bool IG.Num.EigenValueDecomposition.IsNonSingular
get

Indicates whether the matrix of coefficients of a linear system is nonsingular.

Returns
true if U, and hence A, is nonsingular.
Matrix IG.Num.EigenValueDecomposition.Eigenvectors
get

Returns the right eigenvectors.

System.Numerics.Complex [] IG.Num.EigenValueDecomposition.EigenValues
get

Returns the eigen values as a an array of complex numbers.

Returns
The eigen values.
double IG.Num.EigenValueDecomposition.Determinant
get

Returns the determinant.

Returns
det(A)
Exceptions
System.ArgumentExceptionMatrix must be square.

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