Class LowerSPDDenseMatrix

All Implemented Interfaces:
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 Details

    • 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 Details

    • copy

      public LowerSPDDenseMatrix copy()
      Description copied from interface: Matrix
      Creates a deep copy of the matrix
      Specified by:
      copy in interface Matrix
      Overrides:
      copy in class LowerSymmDenseMatrix
      Returns:
      A
    • 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
    • transMultAdd

      public Vector transMultAdd(double alpha, Vector x, Vector y)
      Description copied from interface: Matrix
      y = alpha*AT*x + y
      Specified by:
      transMultAdd in interface Matrix
      Overrides:
      transMultAdd in class AbstractMatrix
      x - Vector of size A.numRows()
      y - Vector of size A.numColumns()
      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
    • transRank1

      public Matrix transRank1(double alpha, Matrix C)
      Description copied from interface: Matrix
      A = alpha*CT*C + A The matrices must be square and of the same size
      Specified by:
      transRank1 in interface Matrix
      Overrides:
      transRank1 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
    • set

      public Matrix set(Matrix B)
      Description copied from interface: Matrix
      A=B. The matrices must be of the same size
      Specified by:
      set in interface Matrix
      Overrides:
      set in class AbstractMatrix
      Returns:
      A
    • 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