Class UpperSymmDenseMatrix

java.lang.Object
no.uib.cipr.matrix.AbstractMatrix
no.uib.cipr.matrix.UpperSymmDenseMatrix
All Implemented Interfaces:
Iterable<MatrixEntry>, Matrix
Direct Known Subclasses:
UpperSPDDenseMatrix

public class UpperSymmDenseMatrix extends AbstractMatrix
Upper symmetrix dense matrix. It has the same storage layout as the DenseMatrix, but only refers to elements above or on the main diagonal. The remaining elements are never accessed nor changed, and is known only by symmetry.
  • Constructor Details

    • UpperSymmDenseMatrix

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

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

      public UpperSymmDenseMatrix(Matrix A, boolean deep)
      Constructor for UpperSymmDenseMatrix
      Parameters:
      A - Matrix to copy. It must be a square matrix, and only the upper triangular part is copied
      deep - If false, a shallow copy is made. In that case, 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
    • get

      public double get(int row, int column)
      Description copied from interface: Matrix
      Returns A(row,column)
      Specified by:
      get in interface Matrix
    • 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
    • copy

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