org.ojalgo.matrix.decomposition
Class CholeskyDecomposition<N extends Number>

java.lang.Object
  extended by org.ojalgo.matrix.decomposition.CholeskyDecomposition<N>
All Implemented Interfaces:
Cholesky<N>, MatrixDecomposition<N>

public abstract class CholeskyDecomposition<N extends Number>
extends Object
implements Cholesky<N>

You create instances of (some subclass of) this class by calling one of the static factory methods: makeBig(), makeComplex(), makePrimitive() or makeJama().

Author:
apete

Method Summary
 boolean compute(Access2D<?> aStore)
           
 boolean computeWithCheck(MatrixStore<?> aStore)
           
 boolean equals(MatrixDecomposition<N> aDecomp, NumberContext aCntxt)
           
 boolean equals(MatrixStore<N> aStore, NumberContext aCntxt)
           
 boolean equals(Object someObj)
           
 N getDeterminant()
           
 MatrixStore<N> getInverse()
          The output must be a "right inverse" and a "generalised inverse".
 MatrixStore<N> getInverse(DecompositionStore<N> preallocated)
           Implementiong this method is optional.
 MatrixStore<N> getL()
           
 boolean isAspectRatioNormal()
           
 boolean isComputed()
           
 boolean isFullSize()
           
 boolean isSolvable()
           
 boolean isSPD()
          To use the Cholesky decomposition rather than the LU decomposition the matrix must be symmetric and positive definite.
static
<N extends Number>
Cholesky<N>
make(Access2D<N> aTypical)
           
static Cholesky<BigDecimal> makeBig()
           
static Cholesky<ComplexNumber> makeComplex()
           
static Cholesky<Double> makeJama()
           
static Cholesky<Double> makePrimitive()
           
 MatrixStore<N> reconstruct()
           
 void reset()
          Delete computed results, and resets attributes to default values
 MatrixStore<N> solve(MatrixStore<N> aRHS)
          Solves [this][X] = [aRHS] by first solving
 MatrixStore<N> solve(MatrixStore<N> aRHS, DecompositionStore<N> preallocated)
          The solution will be written to "preallocated" and then returned.
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition
equals, isComputed
 

Method Detail

make

public static final <N extends Number> Cholesky<N> make(Access2D<N> aTypical)

makeBig

public static final Cholesky<BigDecimal> makeBig()

makeComplex

public static final Cholesky<ComplexNumber> makeComplex()

makeJama

public static final Cholesky<Double> makeJama()

makePrimitive

public static final Cholesky<Double> makePrimitive()

compute

public boolean compute(Access2D<?> aStore)
Specified by:
compute in interface MatrixDecomposition<N extends Number>
Parameters:
aStore - A matrix to decompose
Returns:
true if the computation suceeded; false if not

computeWithCheck

public boolean computeWithCheck(MatrixStore<?> aStore)
Specified by:
computeWithCheck in interface Cholesky<N extends Number>

equals

public final boolean equals(MatrixStore<N> aStore,
                            NumberContext aCntxt)
Specified by:
equals in interface MatrixDecomposition<N extends Number>

getDeterminant

public N getDeterminant()
Specified by:
getDeterminant in interface Cholesky<N extends Number>

getInverse

public final MatrixStore<N> getInverse()
Description copied from interface: MatrixDecomposition
The output must be a "right inverse" and a "generalised inverse".

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

getInverse

public final MatrixStore<N> getInverse(DecompositionStore<N> preallocated)
Description copied from interface: MatrixDecomposition

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 MatrixDecomposition.getInverse().

Specified by:
getInverse in interface MatrixDecomposition<N extends Number>
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

getL

public MatrixStore<N> getL()
Specified by:
getL in interface Cholesky<N extends Number>

isFullSize

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

isSolvable

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

isSPD

public boolean isSPD()
Description copied from interface: Cholesky
To use the Cholesky decomposition rather than the LU decomposition the matrix must be symmetric and positive definite. It is recommended that the decomposition algorithm checks for this during calculation. Possibly the matrix could be assumed to be symmetric (to improve performance) but tests should be made to assure the matrix is positive definite.

Specified by:
isSPD in interface Cholesky<N extends Number>
Returns:
true if the tests did not fail.

reconstruct

public MatrixStore<N> reconstruct()
Specified by:
reconstruct in interface MatrixDecomposition<N extends Number>

reset

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

Specified by:
reset in interface MatrixDecomposition<N extends Number>

solve

public final MatrixStore<N> solve(MatrixStore<N> aRHS)
Solves [this][X] = [aRHS] by first solving
[L][Y] = [aRHS]
and then
[U][X] = [Y]
.

Specified by:
solve in interface MatrixDecomposition<N extends Number>
Parameters:
aRHS - The right hand side
Returns:
[X]

solve

public final MatrixStore<N> solve(MatrixStore<N> aRHS,
                                  DecompositionStore<N> preallocated)
The solution will be written to "preallocated" and then returned.

Specified by:
solve in interface MatrixDecomposition<N extends Number>
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)

equals

public final boolean equals(MatrixDecomposition<N> aDecomp,
                            NumberContext aCntxt)
Specified by:
equals in interface MatrixDecomposition<N extends Number>

equals

public boolean equals(Object someObj)
Overrides:
equals in class Object

isAspectRatioNormal

public boolean isAspectRatioNormal()

isComputed

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