org.ojalgo.matrix.jama
Class JamaLU

java.lang.Object
  extended by org.ojalgo.matrix.jama.JamaLU
All Implemented Interfaces:
LU<Double>, MatrixDecomposition<Double>

public final class JamaLU
extends Object
implements LU<Double>

This class adapts JAMA's LUDecomposition to ojAlgo's LU interface.

Author:
apete

Constructor Summary
JamaLU()
           
 
Method Summary
 boolean compute(MatrixStore<Double> aStore)
           
 boolean computeWithoutPivoting(MatrixStore<Double> aStore)
          The normal MatrixDecomposition.compute(MatrixStore) method must handle cases where pivoting is required.
 boolean equals(BasicMatrix aMtrx, NumberContext aCntxt)
           
 boolean equals(MatrixDecomposition<Double> aDecomp, NumberContext aCntxt)
           
 boolean equals(MatrixStore<Double> aStore, NumberContext aCntxt)
           
 Double getDeterminant()
           
 JamaMatrix getInverse()
          The output must be a "right inverse" and a "generalised inverse".
 JamaMatrix getL()
           
 int[] getPivotOrder()
           
 int getRank()
           
 JamaMatrix getU()
          http://en.wikipedia.org/wiki/Row_echelon_form

This is the same as [D][U].
 JamaMatrix invert(MatrixStore<Double> aStore)
          A convenience method that produces exactly the same result as if you first call MatrixDecomposition.compute(MatrixStore) and then MatrixDecomposition.getInverse().
 boolean isComputed()
           
 boolean isFullSize()
           
 boolean isSolvable()
           
 boolean isSquareAndNotSingular()
           
 void reset()
           
 JamaMatrix solve(MatrixStore<Double> aRHS)
           
 Future<DecomposeAndSolve<Double>> solve(MatrixStore<Double> aBody, MatrixStore<Double> aRHS)
          Will solve [aBody][X]=[aRHS] concurrently by first calling MatrixDecomposition.compute(MatrixStore) using [aBody], and then MatrixDecomposition.solve(MatrixStore) using [aRHS].
 String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition
compute, equals, invert, solve, solve
 

Constructor Detail

JamaLU

public JamaLU()
Method Detail

computeWithoutPivoting

public boolean computeWithoutPivoting(MatrixStore<Double> aStore)
Description copied from interface: LU
The normal MatrixDecomposition.compute(MatrixStore) 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.

Specified by:
computeWithoutPivoting in interface LU<Double>

equals

public boolean equals(MatrixStore<Double> aStore,
                      NumberContext aCntxt)
Specified by:
equals in interface MatrixDecomposition<Double>

getDeterminant

public Double getDeterminant()
Specified by:
getDeterminant in interface LU<Double>

getInverse

public JamaMatrix getInverse()
Description copied from interface: MatrixDecomposition
The output must be a "right inverse" and a "generalised inverse".

Specified by:
getInverse in interface MatrixDecomposition<Double>
See Also:
BasicMatrix.invert()

getL

public JamaMatrix getL()
Specified by:
getL in interface LU<Double>

getPivotOrder

public int[] getPivotOrder()
Specified by:
getPivotOrder in interface LU<Double>

getRank

public int getRank()
Specified by:
getRank in interface LU<Double>

getU

public JamaMatrix getU()
Description copied from interface: LU
http://en.wikipedia.org/wiki/Row_echelon_form

This is the same as [D][U]. Together with the pivotOrder and [L] this constitutes an alternative, more compact, way to express the decomposition.

Specified by:
getU in interface LU<Double>
See Also:
LU.getPivotOrder(), LU.getL()

isComputed

public boolean isComputed()
Specified by:
isComputed in interface MatrixDecomposition<Double>
Returns:
true if computation has been attemped; false if not.
See Also:
MatrixDecomposition.compute(MatrixStore), MatrixDecomposition.isSolvable()

isFullSize

public boolean isFullSize()
Specified by:
isFullSize in interface MatrixDecomposition<Double>
Returns:
True if the implementation generates a full sized decomposition.

isSolvable

public boolean isSolvable()
Specified by:
isSolvable in interface MatrixDecomposition<Double>
Returns:
true if it is ok to call MatrixDecomposition.solve(MatrixStore) (computation was successful); false if not
See Also:
MatrixDecomposition.solve(MatrixStore), MatrixDecomposition.isComputed()

isSquareAndNotSingular

public boolean isSquareAndNotSingular()
Specified by:
isSquareAndNotSingular in interface LU<Double>

reset

public void reset()
Specified by:
reset in interface MatrixDecomposition<Double>

toString

public String toString()
Overrides:
toString in class Object

compute

public final boolean compute(MatrixStore<Double> aStore)
Specified by:
compute in interface MatrixDecomposition<Double>
Parameters:
aStore - A matrix to decompose
Returns:
true if the computation suceeded; false if not

equals

public final boolean equals(BasicMatrix aMtrx,
                            NumberContext aCntxt)

equals

public boolean equals(MatrixDecomposition<Double> aDecomp,
                      NumberContext aCntxt)
Specified by:
equals in interface MatrixDecomposition<Double>

invert

public final JamaMatrix invert(MatrixStore<Double> aStore)
Description copied from interface: MatrixDecomposition
A convenience method that produces exactly the same result as if you first call MatrixDecomposition.compute(MatrixStore) and then MatrixDecomposition.getInverse().

Specified by:
invert in interface MatrixDecomposition<Double>

solve

public JamaMatrix solve(MatrixStore<Double> aRHS)
Specified by:
solve in interface MatrixDecomposition<Double>

solve

public final Future<DecomposeAndSolve<Double>> solve(MatrixStore<Double> aBody,
                                                     MatrixStore<Double> aRHS)
Description copied from interface: MatrixDecomposition
Will solve [aBody][X]=[aRHS] concurrently by first calling MatrixDecomposition.compute(MatrixStore) using [aBody], and then MatrixDecomposition.solve(MatrixStore) using [aRHS]. If either of the input [aBody] or [aRHS] is set to null the corresponing calculation is skipped.

Specified by:
solve in interface MatrixDecomposition<Double>
Parameters:
aBody - The equation system body
aRHS - The equation system right hand side
Returns:
The matrix decomposition and the equation system solution, [X]