IGLib
1.7.2
The IGLib base library for development of numerical, technical and business applications.
|
LU decomposition of a matrix. More...
Public Member Functions | |
LUDecomposition (Matrix_MathNetNumerics A) | |
Constructor. More... | |
LUDecomposition (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 | |
int[] | _pivot |
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 | L [get] |
Returns the lower triangular factor. More... | |
Matrix | U [get] |
Returns the upper triangular factor. More... | |
int[] | Pivot [get] |
Returns the integer pivot permutation vector of LU decomposition. 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] |
LU decomposition of a matrix.
Objects of this class are immutable. Decomposition is calculated at initialization, and the decomposed matrix can not be replaced later.
For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n unit lower triangular matrix L, an n-by-n upper triangular matrix U, and a permutation vector pivot of length m so that A(piv,:) = L*U. If m < n, then L is m-by-m and U is m-by-n.
The LU decomposition with pivoting always exists, even if the matrix is singular, so the constructor will never fail. The primary use of the LU decomposition is in the solution of square systems of simultaneous linear equations. This will fail if IsNonSingular() returns false.
$A Igor Nov08 Apr12;
|
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().
Referenced by IG.Num.SpeedTestCpu.TestComputationalTimesLU_IGLib().
|
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 |
|
protected |
|
get |
Indicates whether the matrix of coefficients of a linear system is nonsingular.
true
if U, and hence A, is nonsingular.
|
get |
Returns the lower triangular factor.
|
get |
Returns the upper triangular factor.
|
get |
Returns the integer pivot permutation vector of LU decomposition.
|
get |