Class UpperSymmDenseMatrix

  • All Implemented Interfaces:
    java.lang.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 Detail

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

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