|
IGLib 1.4
The IGLib base library for development of numerical, technical and business applications.
|
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: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 |
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;
| IG::Num::EigenValueDecomposition::EigenValueDecomposition | ( | Matrix_MathNetNumerics | A | ) | [inline] |
Constructor.
| A | Matrix to be decomposed. |
| IG::Num::EigenValueDecomposition::EigenValueDecomposition | ( | Matrix | A | ) | [inline] |
Constructor.
| A | Matrix to be decomposed. |
| 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.
| 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.
| 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.
| righthandSides | Matrix that contains right-hand sides of the linear equations to be solved as its columns. |
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.
| righthandSides | Vector of right-hand sides of the linear equations to be solved. |
Reimplemented from IG::Num::LinearSolverBase.
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] |
bool IG::Num::EigenValueDecomposition::IsNonSingular [get] |
Indicates whether the matrix of coefficients of a linear system is nonsingular.
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.
double IG::Num::EigenValueDecomposition::Determinant [get] |