Class SingularValueDecomposition


  • public class SingularValueDecomposition
    extends java.lang.Object
    Singular Value Decomposition.

    For an m-by-n matrix A with m >= n, the singular value decomposition is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and an n-by-n orthogonal matrix V so that A = U*S*V'.

    The singular values, sigma[k] = S[k][k], are ordered so that sigma[0] >= sigma[1] >= ... >= sigma[n-1].

    The singular value decomposition always exists, so the constructor will never fail. The matrix condition number and the effective numerical rank can be computed from this decomposition.

    Since:
    0.1
    Author:
    Arthur Zimek
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private int m
      Row and column dimensions.
      private int n
      Row and column dimensions.
      private double[] s
      Array for internal storage of singular values.
      private double[][] U
      Arrays for internal storage of U and V.
      private double[][] V
      Arrays for internal storage of U and V.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double cond()
      Two norm condition number
      private int convergence​(int k, int pp, boolean wantu, boolean wantv)  
      private void deflate​(double[] e, int p, int k, boolean wantv)  
      private void generateU​(int nu, int nct)  
      private void generateV​(int nu, double[] e, int nrt)  
      double[][] getS()
      Return the diagonal matrix of singular values
      double[] getSingularValues()
      Return the one-dimensional array of singular values
      double[][] getU()
      Return the left singular vectors
      double[][] getV()
      Return the right singular vectors
      double norm2()
      Two norm
      private void qrStep​(double[] e, int p, int k, boolean wantu, boolean wantv)  
      int rank()
      Effective numerical matrix rank
      private void split​(double[] e, int p, int k, boolean wantu)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • U

        private double[][] U
        Arrays for internal storage of U and V.
      • V

        private double[][] V
        Arrays for internal storage of U and V.
      • s

        private double[] s
        Array for internal storage of singular values.
      • m

        private int m
        Row and column dimensions.
      • n

        private int n
        Row and column dimensions.
    • Constructor Detail

      • SingularValueDecomposition

        public SingularValueDecomposition​(double[][] Arg)
        Constructor.
        Parameters:
        Arg - Rectangular input matrix
    • Method Detail

      • generateU

        private void generateU​(int nu,
                               int nct)
      • generateV

        private void generateV​(int nu,
                               double[] e,
                               int nrt)
      • deflate

        private void deflate​(double[] e,
                             int p,
                             int k,
                             boolean wantv)
      • split

        private void split​(double[] e,
                           int p,
                           int k,
                           boolean wantu)
      • qrStep

        private void qrStep​(double[] e,
                            int p,
                            int k,
                            boolean wantu,
                            boolean wantv)
      • convergence

        private int convergence​(int k,
                                int pp,
                                boolean wantu,
                                boolean wantv)
      • getU

        public double[][] getU()
        Return the left singular vectors
        Returns:
        U
      • getV

        public double[][] getV()
        Return the right singular vectors
        Returns:
        V
      • getSingularValues

        public double[] getSingularValues()
        Return the one-dimensional array of singular values
        Returns:
        diagonal of S.
      • getS

        public double[][] getS()
        Return the diagonal matrix of singular values
        Returns:
        S
      • norm2

        public double norm2()
        Two norm
        Returns:
        max(S)
      • cond

        public double cond()
        Two norm condition number
        Returns:
        max(S)/min(S)
      • rank

        public int rank()
        Effective numerical matrix rank
        Returns:
        Number of non-negligible singular values.