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

- Main Page
- Namespaces
- Classes
- Files
- Directories

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | Protected Attributes | Properties | Private Attributes

# 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:
[legend]
Collaboration diagram for IG::Num::EigenValueDecomposition:
[legend]

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:

  A | Matrix to be decomposed.

IG::Num::EigenValueDecomposition::EigenValueDecomposition | ( | Matrix | A | ) | `[inline]`

Constructor.

Parameters:

  A | Matrix 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:

  product | Matrix 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:

  inv | Matrix 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:

  righthandSides | Matrix 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:

  righthandSides | Vector 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]`

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.

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.ArgumentException | Matrix must be square.

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

- MatrixDecompositions.cs

All Classes Namespaces Files Functions Variables Enumerations Properties Events