Interface SingularValue<N extends Comparable<N>>

All Superinterfaces:
InverterTask<N>, InvertibleFactor<N>, MatrixDecomposition<N>, MatrixDecomposition.EconomySize<N>, MatrixDecomposition.Ordered<N>, MatrixDecomposition.RankRevealing<N>, MatrixDecomposition.Solver<N>, MatrixDecomposition.Values<N>, MatrixTask<N>, Provider2D, Provider2D.Condition, Provider2D.Inverse<Optional<MatrixStore<N>>>, Provider2D.Rank, Provider2D.Solution<Optional<MatrixStore<N>>>, SolverTask<N>, Structure1D, Structure2D
All Known Implementing Classes:
RawSingularValue, SingularValueDecomposition, SingularValueDecomposition.C128, SingularValueDecomposition.H256, SingularValueDecomposition.Q128, SingularValueDecomposition.R064, SingularValueDecomposition.R128

Singular Value: [A] = [U][D][V]T Decomposes [this] into [U], [D] and [V] where:
  • [U] is an orthogonal matrix. The columns are the left, orthonormal, singular vectors of [this]. Its columns are the eigenvectors of [A][A]T, and therefore has the same number of rows as [this].
  • [D] is a diagonal matrix. The elements on the diagonal are the singular values of [this]. It is either square or has the same dimensions as [this]. The singular values of [this] are the square roots of the nonzero eigenvalues of [A][A]T and [A]T[A] (they are the same)
  • [V] is an orthogonal matrix. The columns are the right, orthonormal, singular vectors of [this]. Its columns are the eigenvectors of [A][A]T, and therefore has the same number of rows as [this] has columns.
  • [this] = [U][D][V]T
A singular values decomposition always exists.
  • Field Details

  • Method Details

    • equals

      static <N extends Comparable<N>> boolean equals(MatrixStore<N> matrix, SingularValue<N> decomposition, NumberContext context)
    • getCondition

      double getCondition()
      The condition number.
      Specified by:
      getCondition in interface Provider2D.Condition
      Returns:
      The largest singular value divided by the smallest singular value.
    • getCovariance

      MatrixStore<N> getCovariance()
      Returns:
      [[A]T[A]]-1 Where [A] is the original matrix.
    • getD

      MatrixStore<N> getD()
      Returns:
      The diagonal matrix of singular values.
    • getFrobeniusNorm

      double getFrobeniusNorm()
      Sometimes also called the Schatten 2-norm or Hilbert-Schmidt norm.
      Returns:
      The square root of the sum of squares of the singular values.
    • getKyFanNorm

      double getKyFanNorm(int k)

      Ky Fan k-norm.

      The first Ky Fan k-norm is the operator norm (the largest singular value), and the last is called the trace norm (the sum of all singular values).

      Parameters:
      k - The number of singular values to add up.
      Returns:
      The sum of the k largest singular values.
    • getOperatorNorm

      double getOperatorNorm()
      Returns:
      2-norm
    • getSingularValues

      Array1D<Double> getSingularValues()
      Returns:
      The singular values ordered in descending order.
    • getSingularValues

      default void getSingularValues(double[] values)
      Parameters:
      values - An array that will receive the singular values
    • getTraceNorm

      double getTraceNorm()
    • getU

      MatrixStore<N> getU()
      If [A] is m-by-n and its rank is r, then:
      • The first r columns of [U] span the column space, range or image of [A].
      • The last m-r columns of [U] span the left nullspace or cokernel of [A].
      Calculating the QR decomposition of [A] is a faster alternative.
    • getV

      MatrixStore<N> getV()
      If [A] is m-by-n and its rank is r, then:
      • The first r columns of [V] span the row space or coimage of [A].
      • The last n-r columns of [V] span the nullspace or kernel of [A].
      Calculating the QR decomposition of [A]T is a faster alternative.
    • reconstruct

      default MatrixStore<N> reconstruct()
      Specified by:
      reconstruct in interface MatrixDecomposition<N extends Comparable<N>>
    • reconstruct

      default MatrixStore<N> reconstruct(int k)