Class LinearAlgebra


  • public class LinearAlgebra
    extends java.lang.Object
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void addMultipleOf​(double[] x, double a, double[] y, int offset, int upTo)
      Adds a * y to x.
      static void choleskyFactorize​(double[][] A, int dim)
      Decomposes the matrix to A = UU^T where U is upper triangular.
      static double dotProd​(double[] x, double[] y, int len)
      Computes the dot product of the sub-vectors of x and y consisting of the elements whose index is < len.
      static double dotProd​(double[] x, double[] y, int offset, int upTo)
      Computes the dot product of the sub-vectors of x and y consisting of the elements whose index is < upTo and ≥ offset.
      static void invertUpperTriangular​(double[][] U, double[][] X, int n)
      Inverts the upper triangular matrix n x n matrix U.
      static void QRFactorize​(double[][] X, double[] rDiag, int m)
      QR decomposes X.
      static void solveLower​(double[][] L, double[] x, double[] y, int n)
      Solves Lx = y and writes the result to x.
      static void solveSymPosDef​(double[][] A, double[] x, double[] b)
      Solves Ax = b and writes the results to x.
      static void solveUpper​(double[][] U, double[] x, double[] y, int n)
      Solves Ux = y and writes the result to x.
      static double sum​(double[] x, int len)
      Computes the sum of the elements of x with index < len.
      static double sum​(double[] x, int offset, int upTo)
      Computes the sum the elements of x whose index is < upTo and ≥ offset.
      static double tripleDotProd​(double[] x, double[] y, double[] z, int len)
      Computes the triple dot product of the sub-vectors of x, y, z consisting of the elements whose index is < len.
      static double tripleDotProd​(double[] x, double[] y, double[] z, int offset, int upTo)
      Computes the tripte dot product of the sub-vectors of x, y, z consisting of the elements whose index is < upTo and ≥ offset.
      • Methods inherited from class java.lang.Object

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

      • solveSymPosDef

        public static void solveSymPosDef​(double[][] A,
                                          double[] x,
                                          double[] b)
        Solves Ax = b and writes the results to x. The matrix A must be symmetric and positively determined.
      • choleskyFactorize

        public static void choleskyFactorize​(double[][] A,
                                             int dim)
        Decomposes the matrix to A = UU^T where U is upper triangular. Writes the result to A.
      • solveUpper

        public static void solveUpper​(double[][] U,
                                      double[] x,
                                      double[] y,
                                      int n)
        Solves Ux = y and writes the result to x. It is ok if x and y are the same vector. The matrix U should be transposed.
      • solveLower

        public static void solveLower​(double[][] L,
                                      double[] x,
                                      double[] y,
                                      int n)
        Solves Lx = y and writes the result to x. The vector x must be different from y.
      • QRFactorize

        public static void QRFactorize​(double[][] X,
                                       double[] rDiag,
                                       int m)
        QR decomposes X. The matrix X is indexed (column, row) (it is transposed). The results are written to X s.t. in X[i] we write r_0i, r_1i,...,r_i-1i, h_i0, h_i1, ...,h_im-i-1 where h_i is the i-th Householder reflector vector. In rDiag we write r_00, r_11,...,r_nn where n is the number of columns in X. The number m is the number of rows in X.
      • invertUpperTriangular

        public static void invertUpperTriangular​(double[][] U,
                                                 double[][] X,
                                                 int n)
        Inverts the upper triangular matrix n x n matrix U. Writes the results to X.
      • dotProd

        public static double dotProd​(double[] x,
                                     double[] y,
                                     int len)
        Computes the dot product of the sub-vectors of x and y consisting of the elements whose index is < len.
      • dotProd

        public static double dotProd​(double[] x,
                                     double[] y,
                                     int offset,
                                     int upTo)
        Computes the dot product of the sub-vectors of x and y consisting of the elements whose index is < upTo and ≥ offset.
      • tripleDotProd

        public static double tripleDotProd​(double[] x,
                                           double[] y,
                                           double[] z,
                                           int len)
        Computes the triple dot product of the sub-vectors of x, y, z consisting of the elements whose index is < len.
      • tripleDotProd

        public static double tripleDotProd​(double[] x,
                                           double[] y,
                                           double[] z,
                                           int offset,
                                           int upTo)
        Computes the tripte dot product of the sub-vectors of x, y, z consisting of the elements whose index is < upTo and ≥ offset.
      • sum

        public static double sum​(double[] x,
                                 int len)
        Computes the sum of the elements of x with index < len.
      • sum

        public static double sum​(double[] x,
                                 int offset,
                                 int upTo)
        Computes the sum the elements of x whose index is < upTo and ≥ offset.
      • addMultipleOf

        public static void addMultipleOf​(double[] x,
                                         double a,
                                         double[] y,
                                         int offset,
                                         int upTo)
        Adds a * y to x.