public final class JamaLU extends Object implements LU<Double>
InverterTask.Factory<N extends Number>
SolverTask.Factory<N extends Number>
DeterminantTask.Factory<N extends Number>
BIG, COMPLEX, PRIMITIVE
BIG, COMPLEX, PRIMITIVE
BIG, COMPLEX, PRIMITIVE
Constructor and Description |
---|
JamaLU()
Not recommended to use this constructor directly.
|
Modifier and Type | Method and Description |
---|---|
Double |
calculateDeterminant(Access2D<Double> matrix) |
boolean |
compute(Access2D<?> aStore) |
boolean |
computeWithoutPivoting(MatrixStore<?> matrix)
The normal
MatrixDecomposition.compute(Access2D) method must handle cases where pivoting is required. |
boolean |
equals(MatrixDecomposition<Double> other,
NumberContext context) |
boolean |
equals(MatrixStore<Double> aStore,
NumberContext context) |
Double |
getDeterminant() |
JamaMatrix |
getInverse()
The output must be a "right inverse" and a "generalised inverse".
|
MatrixStore<Double> |
getInverse(DecompositionStore<Double> preallocated)
Makes no use of
preallocated at all. |
JamaMatrix |
getL() |
int[] |
getPivotOrder()
This can be used to create a [P] matrix using IdentityStore in combination with
RowsStore or ColumnsStore.
|
int |
getRank() |
int[] |
getReducedPivots() |
JamaMatrix |
getU()
http://en.wikipedia.org/wiki/Row_echelon_form
This is the same as [D][U]. |
MatrixStore<Double> |
invert(MatrixStore<Double> original)
The output must be a "right inverse" and a "generalised inverse".
|
MatrixStore<Double> |
invert(MatrixStore<Double> original,
DecompositionStore<Double> preallocated)
Implementiong this method is optional.
|
boolean |
isAspectRatioNormal() |
boolean |
isComputed() |
boolean |
isFullSize() |
boolean |
isSolvable() |
boolean |
isSquareAndNotSingular() |
DecompositionStore<Double> |
preallocate(Access2D<Double> template)
Implementiong this method is optional.
|
DecompositionStore<Double> |
preallocate(Access2D<Double> templateBody,
Access2D<Double> templateRHS)
Implementiong this method is optional.
|
MatrixStore<Double> |
reconstruct() |
void |
reset()
Delete computed results, and resets attributes to default values
|
JamaMatrix |
solve(Access2D<Double> rhs)
[A][X]=[B] or [this][return]=[aRHS]
|
MatrixStore<Double> |
solve(Access2D<Double> body,
Access2D<Double> rhs)
[A][X]=[B] or [this][return]=[aRHS]
|
MatrixStore<Double> |
solve(Access2D<Double> body,
Access2D<Double> rhs,
DecompositionStore<Double> preallocated)
Implementiong this method is optional.
|
JamaMatrix |
solve(Access2D<Double> rhs,
DecompositionStore<Double> preallocated)
Makes no use of
preallocated at all. |
String |
toString() |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
compute, equals, getInverse, preallocate, solve, solve
invert, invert, preallocate
solve, solve
public JamaLU()
public Double calculateDeterminant(Access2D<Double> matrix)
calculateDeterminant
in interface DeterminantTask<Double>
public boolean computeWithoutPivoting(MatrixStore<?> matrix)
LU
MatrixDecomposition.compute(Access2D)
method must handle cases where pivoting is required. If you know that
pivoting is not needed you may call this method instead - it's faster.computeWithoutPivoting
in interface LU<Double>
public boolean equals(MatrixStore<Double> aStore, NumberContext context)
equals
in interface MatrixDecomposition<Double>
public Double getDeterminant()
getDeterminant
in interface LU<Double>
public JamaMatrix getInverse()
MatrixDecomposition
getInverse
in interface MatrixDecomposition<Double>
BasicMatrix.invert()
public JamaMatrix getL()
public int[] getPivotOrder()
LU
getPivotOrder
in interface LU<Double>
public int[] getReducedPivots()
getReducedPivots
in interface LU<Double>
public JamaMatrix getU()
LU
getU
in interface LU<Double>
LU.getPivotOrder()
,
LU.getL()
public boolean isAspectRatioNormal()
public boolean isComputed()
isComputed
in interface MatrixDecomposition<Double>
MatrixDecomposition.compute(Access2D)
,
MatrixDecomposition.isSolvable()
public boolean isFullSize()
isFullSize
in interface MatrixDecomposition<Double>
public boolean isSolvable()
isSolvable
in interface MatrixDecomposition<Double>
MatrixDecomposition.solve(Access2D)
,
MatrixDecomposition.isComputed()
public boolean isSquareAndNotSingular()
isSquareAndNotSingular
in interface LU<Double>
public MatrixStore<Double> reconstruct()
reconstruct
in interface MatrixDecomposition<Double>
public void reset()
MatrixDecomposition
reset
in interface MatrixDecomposition<Double>
public final boolean compute(Access2D<?> aStore)
compute
in interface MatrixDecomposition<Double>
aStore
- A matrix to decomposepublic final boolean equals(MatrixDecomposition<Double> other, NumberContext context)
equals
in interface MatrixDecomposition<Double>
public final MatrixStore<Double> getInverse(DecompositionStore<Double> preallocated)
preallocated
at all. Simply delegates to getInverse()
.getInverse
in interface MatrixDecomposition<Double>
preallocated
- Preallocated memory for the results, possibly some intermediate results. You must assume this
is modified, but you cannot assume it will contain the full/final/correct solution.MatrixDecomposition.getInverse(org.ojalgo.matrix.decomposition.DecompositionStore)
public final MatrixStore<Double> invert(MatrixStore<Double> original)
InverterTask
invert
in interface InverterTask<Double>
BasicMatrix.invert()
public final MatrixStore<Double> invert(MatrixStore<Double> original, DecompositionStore<Double> preallocated)
InverterTask
Implementiong this method is optional.
Exactly how a specific implementation makes use of preallocated
is not specified by this interface.
It must be documented for each implementation.
Should produce the same results as calling #getInverse()
.
invert
in interface InverterTask<Double>
preallocated
- Preallocated memory for the results, possibly some intermediate results. You must assume this
is modified, but you cannot assume it will contain the full/final/correct solution.public final DecompositionStore<Double> preallocate(Access2D<Double> template)
InverterTask
Implementiong this method is optional.
Will create a DecompositionStore instance suitable for use with#solve(Access2D, DecompositionStore)
. When solving an equation system [A][X]=[B] ([mxn][nxb]=[mxb]) the
preallocated memory/matrix will typically be either mxb or nxb (if A is square then there is no doubt).preallocate
in interface InverterTask<Double>
public final DecompositionStore<Double> preallocate(Access2D<Double> templateBody, Access2D<Double> templateRHS)
MatrixDecomposition
Implementiong this method is optional.
Will create a DecompositionStore instance suitable for use withMatrixDecomposition.solve(Access2D, DecompositionStore)
. When solving an equation system [A][X]=[B] ([mxn][nxb]=[mxb]) the
preallocated memory/matrix will typically be either mxb or nxb (if A is square then there is no doubt).preallocate
in interface MatrixDecomposition<Double>
preallocate
in interface SolverTask<Double>
public JamaMatrix solve(Access2D<Double> rhs)
MatrixDecomposition
solve
in interface MatrixDecomposition<Double>
public final MatrixStore<Double> solve(Access2D<Double> body, Access2D<Double> rhs)
SolverTask
solve
in interface SolverTask<Double>
public final MatrixStore<Double> solve(Access2D<Double> body, Access2D<Double> rhs, DecompositionStore<Double> preallocated)
SolverTask
Implementiong this method is optional.
Exactly how a specific implementation makes use of preallocated
is not specified by this interface.
It must be documented for each implementation.
Should produce the same results as calling #solve(Access2D)
.
solve
in interface SolverTask<Double>
rhs
- The Right Hand Side, wont be modfiedpreallocated
- Preallocated memory for the results, possibly some intermediate results. You must assume this
is modified, but you cannot assume it will contain the full/final/correct solution.public final JamaMatrix solve(Access2D<Double> rhs, DecompositionStore<Double> preallocated)
preallocated
at all. Simply delegates to solve(Access2D)
.solve
in interface MatrixDecomposition<Double>
rhs
- The Right Hand Side, wont be modfiedpreallocated
- Preallocated memory for the results, possibly some intermediate results. You must assume this
is modified, but you cannot assume it will contain the full/final/correct solution.MatrixDecomposition.solve(Access2D,
org.ojalgo.matrix.decomposition.DecompositionStore)