IGLib 1.4
The IGLib base library for development of numerical, technical and business applications.

IG::Num::EigenValueDecomposition Class Reference

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. More...

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

List of all members.

Public Member Functions

 EigenValueDecomposition (Matrix_MathNetNumerics A)
 Constructor.
 EigenValueDecomposition (Matrix A)
 Constructor.
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.
IMatrix GetProduct ()
 Calculates and returns the product (i.e. the original matrix of coefficients of a linear system of equations) of the current decomposition.
void Inverse (ref IMatrix inv)
 Calculates inverse of the decomposed matrix represented by the current object, and stores it in the specified matrix.
IMatrix Inverse ()
 Calculates and returns inverse of the decomposed matrix represented by the current object.

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

Protected Attributes

internal
EigenValueDecomposition_MathNetNumerics 
Base = null
double _determinant
bool _determinantCalculated = false

Properties

bool IsNonSingular [get]
 Indicates whether the matrix of coefficients of a linear system is nonsingular.
Matrix Eigenvectors [get]
 Returns the right eigenvectors.
System.Numerics.Complex[] EigenValues [get]
 Returns the eigen values as a an array of complex numbers.
double Determinant [get]
 Returns the determinant.

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.

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.

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) [inline, protected, virtual]

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.

override VectorBase_MathNetNumerics IG::Num::EigenValueDecomposition::SolveMathNetNumerics ( IVector  rightHandSides) [inline, protected, virtual]

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.


Member Data Documentation

internal EigenValueDecomposition_MathNetNumerics IG::Num::EigenValueDecomposition::Base = null [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.

Implements IG::Num::ILinearSolver.

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:
 All Classes Namespaces Files Functions Variables Enumerations Properties Events