org.ojalgo.matrix.decomposition

## Interface MatrixDecomposition.RankRevealing<N extends Number>

• All Superinterfaces:
MatrixDecomposition<N>, MatrixDecomposition.Ordered<N>, Structure1D, Structure2D
All Known Subinterfaces:
Cholesky<N>, LDL<N>, LDU<N>, LU<N>, QR<N>, SingularValue<N>
Enclosing interface:
MatrixDecomposition<N extends Number>

```public static interface MatrixDecomposition.RankRevealing<N extends Number>
extends MatrixDecomposition.Ordered<N>```
A rank-revealing matrix decomposition of a matrix [A] is a decomposition that is, or can be transformed to be, on the form [A]=[X][D][Y]T where:
• [X] and [Y] are square and well conditioned.
• [D] is diagonal with nonnegative and non-increasing values on the diagonal.

The defintion that [X] and [Y] should be well conditioned is subject to interpretation. A specific decomposition algorithm can be more or less good at revealing the rank. Typically the `SingularValue` decomposition is the best.

The requirement to have the diagonal elements of [D] ordered can be very practical, but is not always strictly necessary in order to just reveal the rank. The method `MatrixDecomposition.Ordered.isOrdered()` indicates if the elements (rows and columns) of the returned matrix factors actually are ordered or not for this particular implementation.

• ### Nested classes/interfaces inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition

`MatrixDecomposition.Determinant<N extends Number>, MatrixDecomposition.EconomySize<N extends Number>, MatrixDecomposition.Factory<D extends MatrixDecomposition<?>>, MatrixDecomposition.Hermitian<N extends Number>, MatrixDecomposition.Ordered<N extends Number>, MatrixDecomposition.Pivoting<N extends Number>, MatrixDecomposition.RankRevealing<N extends Number>, MatrixDecomposition.Solver<N extends Number>, MatrixDecomposition.Values<N extends Number>`
• ### Nested classes/interfaces inherited from interface org.ojalgo.structure.Structure2D

`Structure2D.IntRowColumn, Structure2D.Logical<S extends Structure2D,B extends Structure2D.Logical<S,?>>, Structure2D.LongRowColumn, Structure2D.ReducibleTo1D<R extends Structure1D>, Structure2D.RowColumnCallback, Structure2D.RowColumnKey<R,C>, Structure2D.RowColumnMapper<R,C>`
• ### Nested classes/interfaces inherited from interface org.ojalgo.structure.Structure1D

`Structure1D.BasicMapper<T>, Structure1D.IndexCallback, Structure1D.IndexMapper<T>, Structure1D.IntIndex, Structure1D.LongIndex, Structure1D.LoopCallback`

• ### Fields inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition

`TYPICAL`
• ### Method Summary

All Methods
Modifier and Type Method and Description
`int` `countSignificant(double threshold)`
`default int` `getRank()`
The best (and most expensive) way to get the effective numerical rank is by calculating a `SingularValue` decomposition and then find the number of nonnegligible singular values.
`double` `getRankThreshold()`
`default boolean` `isFullRank()`
• ### Methods inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition.Ordered

`isOrdered`
• ### Methods inherited from interface org.ojalgo.matrix.decomposition.MatrixDecomposition

`decompose, isComputed, reconstruct, reset`
• ### Methods inherited from interface org.ojalgo.structure.Structure2D

`column, column, column, column, column, count, count, countColumns, countRows, index, index, isEmpty, isFat, isScalar, isSquare, isTall, isVector, loopAll, loopColumn, loopColumn, loopDiagonal, loopMatching, loopRow, loopRow, mapperOf, row, row, row, row, row`
• ### Methods inherited from interface org.ojalgo.structure.Structure1D

`index, loopAll, loopMatching, loopRange, mapper, size`
• ### Method Detail

• #### countSignificant

`int countSignificant(double threshold)`
Parameters:
`threshold` - Significance limit
Returns:
The number of elements in the diagonal matrix that are greater than the threshold
• #### getRank

`default int getRank()`
The best (and most expensive) way to get the effective numerical rank is by calculating a `SingularValue` decomposition and then find the number of nonnegligible singular values.
Returns:
The effective numerical rank (best estimate)
• #### getRankThreshold

`double getRankThreshold()`
• #### isFullRank

`default boolean isFullRank()`
Returns:
true if the rank is equal to the minimum of the row and column dimensions; false if not