Interface MatrixDecomposition.RankRevealing<N extends Comparable<N>>

All Superinterfaces:
MatrixDecomposition<N>, MatrixDecomposition.Ordered<N>, Provider2D, Provider2D.Rank, Structure1D, Structure2D
All Known Subinterfaces:
Cholesky<N>, LDL<N>, LDU<N>, LU<N>, QR<N>, SingularValue<N>
All Known Implementing Classes:
CholeskyDecomposition, CholeskyDecomposition.C128, CholeskyDecomposition.H256, CholeskyDecomposition.Q128, CholeskyDecomposition.R064, CholeskyDecomposition.R128, LDLDecomposition, LDLDecomposition.C128, LDLDecomposition.H256, LDLDecomposition.Q128, LDLDecomposition.R064, LDLDecomposition.R128, LUDecomposition, LUDecomposition.C128, LUDecomposition.H256, LUDecomposition.Q128, LUDecomposition.R064, LUDecomposition.R128, QRDecomposition, QRDecomposition.C128, QRDecomposition.H256, QRDecomposition.Q128, QRDecomposition.R064, QRDecomposition.R128, RawCholesky, RawLU, RawQR, RawSingularValue, SingularValueDecomposition, SingularValueDecomposition.C128, SingularValueDecomposition.H256, SingularValueDecomposition.Q128, SingularValueDecomposition.R064, SingularValueDecomposition.R128
Enclosing interface:
MatrixDecomposition<N extends Comparable<N>>

public static interface MatrixDecomposition.RankRevealing<N extends Comparable<N>> extends MatrixDecomposition.Ordered<N>, Provider2D.Rank
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.

  • Method Details

    • 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.
      Specified by:
      getRank in interface Provider2D.Rank
      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