IGLib
1.7.2
The IGLib base library for development of numerical, technical and business applications.
|
Eigenvalue decomposition of a matrix. More...
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 |
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;
|
inline |
Constructor.
A | Matrix to be decomposed. |
|
inline |
Constructor.
A | Matrix to be decomposed. |
|
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.
References IG.Num.Matrix.Copy().
|
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.
|
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.
References IG.Num.Matrix.Copy().
|
inline |
Calculates and returns inverse of the decomposed matrix represented by the current object.
Implements IG.Num.ILinearSolver.
|
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.
righthandSides | Matrix that contains right-hand sides of the linear equations to be solved as its columns. |
Reimplemented from IG.Num.LinearSolverBase.
References IG.Num.Matrix.Copy().
|
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.
rightHandSides | Vector of right-hand sides of the linear equations to be solved. |
Reimplemented from IG.Num.LinearSolverBase.
References IG.Num.VectorBase.Copy().
|
protected |
|
protected |
|
private |
|
get |
Indicates whether the matrix of coefficients of a linear system is nonsingular.
true
if U, and hence A, is nonsingular.
|
get |
Returns the right eigenvectors.
|
get |
Returns the eigen values as a an array of complex numbers.
|
get |