Class LowerSPDDenseMatrix

  • All Implemented Interfaces:
    java.lang.Iterable<MatrixEntry>, Matrix

    public class LowerSPDDenseMatrix
    extends LowerSymmDenseMatrix
    Lower symmetrical positive definite dense matrix. Same layout as LowerSymmDenseMatrix. This class does not enforce the SPD property, but serves as a tag so that more efficient algorithms can be used in the solvers.
    • Constructor Detail

      • LowerSPDDenseMatrix

        public LowerSPDDenseMatrix​(int n)
        Constructor for LowerSPDDenseMatrix
        Parameters:
        n - Size of the matrix. Since the matrix must be square, this equals both the number of rows and columns
      • LowerSPDDenseMatrix

        public LowerSPDDenseMatrix​(Matrix A)
        Constructor for LowerSPDDenseMatrix
        Parameters:
        A - Matrix to copy. It must be a square matrix, and only the lower triangular part is copied
      • LowerSPDDenseMatrix

        public LowerSPDDenseMatrix​(Matrix A,
                                   boolean deep)
        Constructor for LowerSPDDenseMatrix
        Parameters:
        A - Matrix to copy. It must be a square matrix, and only the lower triangular part is copied
        deep - False for a shallow copy, else it'll be a deep copy. For shallow copies, A must be a dense matrix
    • Method Detail

      • solve

        public Matrix solve​(Matrix B,
                            Matrix X)
        Description copied from interface: Matrix
        X = A\B. Not all matrices support this operation, those that do not throw UnsupportedOperationException. Note that it is often more efficient to use a matrix decomposition and its associated solver
        Specified by:
        solve in interface Matrix
        Parameters:
        B - Matrix with the same number of rows as A, and the same number of columns as X
        X - Matrix with a number of rows equal A.numColumns(), and the same number of columns as B
        Returns:
        X
      • multAdd

        public Matrix multAdd​(double alpha,
                              Matrix B,
                              Matrix C)
        Description copied from interface: Matrix
        C = alpha*A*B + C
        Specified by:
        multAdd in interface Matrix
        Overrides:
        multAdd in class AbstractMatrix
        B - Matrix such that B.numRows() == A.numColumns() and B.numColumns() == C.numColumns()
        C - Matrix such that C.numRows() == A.numRows() and B.numColumns() == C.numColumns()
        Returns:
        C
      • transAmultAdd

        public Matrix transAmultAdd​(double alpha,
                                    Matrix B,
                                    Matrix C)
        Description copied from interface: Matrix
        C = alpha*AT*B + C
        Specified by:
        transAmultAdd in interface Matrix
        Overrides:
        transAmultAdd in class AbstractMatrix
        B - Matrix such that B.numRows() == A.numRows() and B.numColumns() == C.numColumns()
        C - Matrix such that C.numRows() == A.numColumns() and B.numColumns() == C.numColumns()
        Returns:
        C
      • rank1

        public Matrix rank1​(double alpha,
                            Vector x,
                            Vector y)
        Description copied from interface: Matrix
        A = alpha*x*yT + A. The matrix must be square, and the vectors of the same length
        Specified by:
        rank1 in interface Matrix
        Overrides:
        rank1 in class AbstractMatrix
        Returns:
        A
      • rank2

        public Matrix rank2​(double alpha,
                            Vector x,
                            Vector y)
        Description copied from interface: Matrix
        A = alpha*x*yT + alpha*y*xT + A. The matrix must be square, and the vectors of the same length
        Specified by:
        rank2 in interface Matrix
        Overrides:
        rank2 in class AbstractMatrix
        Returns:
        A
      • multAdd

        public Vector multAdd​(double alpha,
                              Vector x,
                              Vector y)
        Description copied from interface: Matrix
        y = alpha*A*x + y
        Specified by:
        multAdd in interface Matrix
        Overrides:
        multAdd in class AbstractMatrix
        x - Vector of size A.numColumns()
        y - Vector of size A.numRows()
        Returns:
        y
      • rank1

        public Matrix rank1​(double alpha,
                            Matrix C)
        Description copied from interface: Matrix
        A = alpha*C*CT + A. The matrices must be square and of the same size
        Specified by:
        rank1 in interface Matrix
        Overrides:
        rank1 in class AbstractMatrix
        Returns:
        A
      • rank2

        public Matrix rank2​(double alpha,
                            Matrix B,
                            Matrix C)
        Description copied from interface: Matrix
        A = alpha*B*CT + alpha*C*BT + A. This matrix must be square
        Specified by:
        rank2 in interface Matrix
        Overrides:
        rank2 in class AbstractMatrix
        B - Matrix with the same number of rows as A and the same number of columns as C
        C - Matrix with the same number of rows as A and the same number of columns as B
        Returns:
        A
      • transRank2

        public Matrix transRank2​(double alpha,
                                 Matrix B,
                                 Matrix C)
        Description copied from interface: Matrix
        A = alpha*BT*C + alpha*CT*B + A. This matrix must be square
        Specified by:
        transRank2 in interface Matrix
        Overrides:
        transRank2 in class AbstractMatrix
        B - Matrix with the same number of rows as C and the same number of columns as A
        C - Matrix with the same number of rows as B and the same number of columns as A
        Returns:
        A
      • solve

        public Vector solve​(Vector b,
                            Vector x)
        Description copied from interface: Matrix
        x = A\b. Not all matrices support this operation, those that do not throw UnsupportedOperationException. Note that it is often more efficient to use a matrix decomposition and its associated solver
        Specified by:
        solve in interface Matrix
        Overrides:
        solve in class AbstractMatrix
        Parameters:
        b - Vector of size A.numRows()
        x - Vector of size A.numColumns()
        Returns:
        x
      • transSolve

        public Matrix transSolve​(Matrix B,
                                 Matrix X)
        Description copied from interface: Matrix
        X = AT\B. Not all matrices support this operation, those that do not throw UnsupportedOperationException. Note that it is often more efficient to use a matrix decomposition and its associated transpose solver
        Specified by:
        transSolve in interface Matrix
        Overrides:
        transSolve in class AbstractMatrix
        Parameters:
        B - Matrix with a number of rows equal A.numColumns(), and the same number of columns as X
        X - Matrix with the same number of rows as A, and the same number of columns as B
        Returns:
        X
      • transSolve

        public Vector transSolve​(Vector b,
                                 Vector x)
        Description copied from interface: Matrix
        x = AT\b. Not all matrices support this operation, those that do not throw UnsupportedOperationException. Note that it is often more efficient to use a matrix decomposition and its associated solver
        Specified by:
        transSolve in interface Matrix
        Overrides:
        transSolve in class AbstractMatrix
        Parameters:
        b - Vector of size A.numColumns()
        x - Vector of size A.numRows()
        Returns:
        x
      • transpose

        public Matrix transpose()
        Description copied from interface: Matrix
        Transposes the matrix in-place. In most cases, the matrix must be square for this to work.
        Specified by:
        transpose in interface Matrix
        Overrides:
        transpose in class AbstractMatrix
        Returns:
        This matrix
      • getData

        public double[] getData()
        Returns the matrix contents. Ordering depends on the underlying storage assumptions
      • zero

        public Matrix zero()
        Description copied from interface: Matrix
        Zeros all the entries in the matrix, while preserving any underlying structure. Useful for general, unstructured matrices.
        Specified by:
        zero in interface Matrix
        Overrides:
        zero in class AbstractMatrix
        Returns:
        A