org.ojalgo.matrix.jama
Class JamaQR

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

public final class JamaQR
extends Object
implements QR<Double>

This class adapts JAMA's QRDecomposition to ojAlgo's QR interface.

Author:
apete

Constructor Summary
JamaQR()
          Not recommended to use this constructor directly.
 
Method Summary
 boolean compute(Access2D<?> aStore)
           
 boolean equals(MatrixDecomposition<Double> aDecomp, NumberContext aCntxt)
           
 boolean equals(MatrixStore<Double> aStore, NumberContext aCntxt)
           
 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 getQ()
           
 JamaMatrix getR()
           
 int getRank()
           
 JamaMatrix invert(MatrixStore<Double> aStore)
           
 boolean isAspectRatioNormal()
           
 boolean isComputed()
           
 boolean isFullColumnRank()
          The QR decompostion always exists, even if the matrix does not have full column rank, so the compute method will never fail.
 boolean isFullSize()
           
 boolean isSolvable()
           
 MatrixStore<Double> reconstruct()
           
 void reset()
          Delete computed results, and resets attributes to default values
 JamaMatrix solve(MatrixStore<Double> aRHS)
          [A][X]=[B] or [this][return]=[aRHS]
 JamaMatrix solve(MatrixStore<Double> aRHS, DecompositionStore<Double> preallocated)
          Makes no use of preallocated at all.
 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, getInverse, solve, solve
 

Constructor Detail

JamaQR

public JamaQR()
Not recommended to use this constructor directly. Consider using the static factory method QRDecomposition.makeJama() instead.

Method Detail

equals

public boolean equals(MatrixStore<Double> aStore,
                      NumberContext aCntxt)
Specified by:
equals in interface MatrixDecomposition<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()

getQ

public JamaMatrix getQ()
Specified by:
getQ in interface QR<Double>

getR

public JamaMatrix getR()
Specified by:
getR in interface QR<Double>

getRank

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

isAspectRatioNormal

public boolean isAspectRatioNormal()

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(Access2D), MatrixDecomposition.isSolvable()

isFullColumnRank

public boolean isFullColumnRank()
Description copied from interface: QR
The QR decompostion always exists, even if the matrix does not have full column rank, so the compute method will never fail. The primary use of the QR decomposition is in the least squares solution of overdetermined systems of simultaneous linear equations. This will fail if the matrix does not have full column rank. The rank must be equal to the number of columns.

Specified by:
isFullColumnRank in interface QR<Double>

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()

reconstruct

public MatrixStore<Double> reconstruct()
Specified by:
reconstruct in interface MatrixDecomposition<Double>

reset

public void reset()
Description copied from interface: MatrixDecomposition
Delete computed results, and resets attributes to default values

Specified by:
reset in interface MatrixDecomposition<Double>

toString

public String toString()
Overrides:
toString in class Object

compute

public final boolean compute(Access2D<?> 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(MatrixDecomposition<Double> aDecomp,
                            NumberContext aCntxt)
Specified by:
equals in interface MatrixDecomposition<Double>

getInverse

public final MatrixStore<Double> getInverse(DecompositionStore<Double> preallocated)
Makes no use of preallocated at all. Simply delegates to getInverse().

Specified by:
getInverse in interface MatrixDecomposition<Double>
Parameters:
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.
Returns:
The inverse
See Also:
MatrixDecomposition.getInverse(org.ojalgo.matrix.decomposition.DecompositionStore)

invert

public final JamaMatrix invert(MatrixStore<Double> aStore)

solve

public JamaMatrix solve(MatrixStore<Double> aRHS)
Description copied from interface: MatrixDecomposition
[A][X]=[B] or [this][return]=[aRHS]

Specified by:
solve in interface MatrixDecomposition<Double>

solve

public final JamaMatrix solve(MatrixStore<Double> aRHS,
                              DecompositionStore<Double> preallocated)
Makes no use of preallocated at all. Simply delegates to solve(MatrixStore).

Specified by:
solve in interface MatrixDecomposition<Double>
Parameters:
aRHS - The Right Hand Side, wont be modfied
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.
Returns:
The solution
See Also:
MatrixDecomposition.solve(org.ojalgo.matrix.store.MatrixStore, org.ojalgo.matrix.decomposition.DecompositionStore)