Class UnitLowerTriangDenseMatrix

All Implemented Interfaces:
Iterable<MatrixEntry>, Matrix

public class UnitLowerTriangDenseMatrix extends LowerTriangDenseMatrix
Unit lower triangular dense matrix. Almost the same as the LowerTriangDenseMatrix, but additionally assumes the main diagonal to be all ones. However it does not access it, so it may be actually be different.
  • Constructor Details

    • UnitLowerTriangDenseMatrix

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

      public UnitLowerTriangDenseMatrix(Matrix A)
      Constructor for UnitLowerTriangDenseMatrix
      Parameters:
      A - Matrix to copy from. Only the strictly lower triangular part is copied
    • UnitLowerTriangDenseMatrix

      public UnitLowerTriangDenseMatrix(Matrix A, boolean deep)
      Constructor for UnitLowerTriangDenseMatrix
      Parameters:
      A - Matrix to copy from. Only the strictly lower triangular part is copied
      deep - If true, A is copied, else a shallow copy is made and the matrices share underlying storage. For this, A must be a dense matrix
  • Method Details

    • add

      public void add(int row, int column, double value)
      Description copied from interface: Matrix
      A(row,column) += value
      Specified by:
      add in interface Matrix
      Overrides:
      add in class LowerTriangDenseMatrix
    • get

      public double get(int row, int column)
      Description copied from interface: Matrix
      Returns A(row,column)
      Specified by:
      get in interface Matrix
      Overrides:
      get in class LowerTriangDenseMatrix
    • set

      public void set(int row, int column, double value)
      Description copied from interface: Matrix
      A(row,column) = value
      Specified by:
      set in interface Matrix
      Overrides:
      set in class LowerTriangDenseMatrix
    • copy

      Description copied from interface: Matrix
      Creates a deep copy of the matrix
      Specified by:
      copy in interface Matrix
      Overrides:
      copy in class LowerTriangDenseMatrix
      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
      Returns:
      A
    • mult

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

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

      public Matrix mult(double alpha, Matrix B, Matrix C)
      Description copied from interface: Matrix
      C = alpha*A*B
      Specified by:
      mult in interface Matrix
      Overrides:
      mult in class AbstractMatrix
      Parameters:
      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
    • transAmult

      public Matrix transAmult(double alpha, Matrix B, Matrix C)
      Description copied from interface: Matrix
      C = alpha*AT*B
      Specified by:
      transAmult in interface Matrix
      Overrides:
      transAmult in class AbstractMatrix
      Parameters:
      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
    • 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
      Overrides:
      solve in class AbstractMatrix
      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
    • 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
    • iterator

      public Iterator<MatrixEntry> iterator()
      Specified by:
      iterator in interface Iterable<MatrixEntry>
      Overrides:
      iterator in class AbstractMatrix
    • 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