Class DenseMatrix<F extends Field<F>>

  • All Implemented Interfaces:
    javolution.lang.Immutable, javolution.lang.Realtime, javolution.lang.ValueType, GroupAdditive<Matrix<F>>, Ring<Matrix<F>>, Structure<Matrix<F>>, VectorSpace<Matrix<F>,​F>

    public final class DenseMatrix<F extends Field<F>>
    extends Matrix<F>

    This class represents a matrix made of dense vectors (as rows). To create a dense matrix made of column vectors the transpose() method can be used. For example:[code] DenseVector column0 = DenseVector.valueOf(...); DenseVector column1 = DenseVector.valueOf(...); DenseMatrix M = DenseMatrix.valueOf(column0, column1).transpose(); [/code]

    As for any concrete structure, this class is declared final (otherwise most operations would have to be overridden to return the appropriate type). Specialized dense matrix should sub-class Matrix directly. For example:[code] // Extension through composition. final class TriangularMatrix > extends Matrix { private DenseMatrix _value; // Possible implementation. ... public TriangularMatrix opposite() { // Returns the right type. return TriangularMatrix.valueOf(_value.opposite()); } ... }[/code]

    • Method Detail

      • valueOf

        public static <F extends Field<F>> DenseMatrix<F> valueOf​(F[][] elements)
        Returns a dense matrix from the specified 2-dimensional array. The first dimension being the row and the second being the column.
        Parameters:
        elements - this matrix elements.
        Returns:
        the matrix having the specified elements.
        Throws:
        DimensionException - if rows have different length.
        See Also:
        DenseMatrix
      • valueOf

        public static <F extends Field<F>> DenseMatrix<F> valueOf​(DenseVector<F>... rows)
        Returns a dense matrix holding the specified row vectors (column vectors if transposed).
        Parameters:
        rows - the row vectors.
        Returns:
        the matrix having the specified rows.
        Throws:
        DimensionException - if the rows do not have the same dimension.
      • valueOf

        public static <F extends Field<F>> DenseMatrix<F> valueOf​(List<DenseVector<F>> rows)
        Returns a dense matrix holding the row vectors from the specified collection (column vectors if transposed).
        Parameters:
        rows - the list of row vectors.
        Returns:
        the matrix having the specified rows.
        Throws:
        DimensionException - if the rows do not have the same dimension.
      • valueOf

        public static <F extends Field<F>> DenseMatrix<F> valueOf​(Matrix<F> that)
        Returns a dense matrix equivalent to the specified matrix.
        Parameters:
        that - the matrix to convert.
        Returns:
        that or a dense matrix holding the same elements as the specified matrix.
      • getNumberOfRows

        public int getNumberOfRows()
        Description copied from class: Matrix
        Returns the number of rows m for this matrix.
        Specified by:
        getNumberOfRows in class Matrix<F extends Field<F>>
        Returns:
        m, the number of rows.
      • getNumberOfColumns

        public int getNumberOfColumns()
        Description copied from class: Matrix
        Returns the number of columns n for this matrix.
        Specified by:
        getNumberOfColumns in class Matrix<F extends Field<F>>
        Returns:
        n, the number of columns.
      • get

        public F get​(int i,
                     int j)
        Description copied from class: Matrix
        Returns a single element from this matrix.
        Specified by:
        get in class Matrix<F extends Field<F>>
        Parameters:
        i - the row index (range [0..m[).
        j - the column index (range [0..n[).
        Returns:
        the element read at [i,j].
      • getRow

        public DenseVector<F> getRow​(int i)
        Description copied from class: Matrix
        Returns the row identified by the specified index in this matrix.
        Specified by:
        getRow in class Matrix<F extends Field<F>>
        Parameters:
        i - the row index (range [0..m[).
        Returns:
        the vector holding the specified row.
      • getColumn

        public DenseVector<F> getColumn​(int j)
        Description copied from class: Matrix
        Returns the column identified by the specified index in this matrix.
        Specified by:
        getColumn in class Matrix<F extends Field<F>>
        Parameters:
        j - the column index (range [0..n[).
        Returns:
        the vector holding the specified column.
      • getDiagonal

        public DenseVector<F> getDiagonal()
        Description copied from class: Matrix
        Returns the diagonal vector.
        Specified by:
        getDiagonal in class Matrix<F extends Field<F>>
        Returns:
        the vector holding the diagonal elements.
      • plus

        public DenseMatrix<F> plus​(Matrix<F> that)
        Description copied from class: Matrix
        Returns the sum of this matrix with the one specified.
        Specified by:
        plus in interface GroupAdditive<F extends Field<F>>
        Specified by:
        plus in class Matrix<F extends Field<F>>
        Parameters:
        that - the matrix to be added.
        Returns:
        this + that.
      • minus

        public DenseMatrix<F> minus​(Matrix<F> that)
        Description copied from class: Matrix
        Returns the difference between this matrix and the one specified.
        Overrides:
        minus in class Matrix<F extends Field<F>>
        Parameters:
        that - the matrix to be subtracted.
        Returns:
        this - that.
      • times

        public DenseVector<F> times​(Vector<F> v)
        Description copied from class: Matrix
        Returns the product of this matrix by the specified vector.
        Specified by:
        times in class Matrix<F extends Field<F>>
        Parameters:
        v - the vector.
        Returns:
        this · v
      • times

        public DenseMatrix<F> times​(Matrix<F> that)
        Description copied from class: Matrix
        Returns the product of this matrix with the one specified.
        Specified by:
        times in interface Ring<F extends Field<F>>
        Specified by:
        times in class Matrix<F extends Field<F>>
        Parameters:
        that - the matrix multiplier.
        Returns:
        this · that.
      • inverse

        public DenseMatrix<F> inverse()
        Description copied from class: Matrix
        Returns the inverse of this matrix (must be square).
        Specified by:
        inverse in class Matrix<F extends Field<F>>
        Returns:
        1 / this
      • determinant

        public F determinant()
        Description copied from class: Matrix
        Returns the determinant of this matrix.
        Specified by:
        determinant in class Matrix<F extends Field<F>>
        Returns:
        this matrix determinant.
      • cofactor

        public F cofactor​(int i,
                          int j)
        Description copied from class: Matrix
        Returns the cofactor of an element in this matrix. It is the value obtained by evaluating the determinant formed by the elements not in that particular row or column.
        Specified by:
        cofactor in class Matrix<F extends Field<F>>
        Parameters:
        i - the row index.
        j - the column index.
        Returns:
        the cofactor of THIS[i,j].
      • adjoint

        public DenseMatrix<F> adjoint()
        Description copied from class: Matrix
        Returns the adjoint of this matrix. It is obtained by replacing each element in this matrix with its cofactor and applying a + or - sign according (-1)**(i+j), and then finding the transpose of the resulting matrix.
        Specified by:
        adjoint in class Matrix<F extends Field<F>>
        Returns:
        the adjoint of this matrix.
      • tensor

        public Matrix<F> tensor​(Matrix<F> that)
        Description copied from class: Matrix
        Returns the linear algebraic matrix tensor product of this matrix and another (Kronecker product). The default implementation returns a DenseMatrix.
        Specified by:
        tensor in class Matrix<F extends Field<F>>
        Parameters:
        that - the second matrix.
        Returns:
        this ⊗ that
        See Also:
        Wikipedia: Kronecker Product
      • vectorization

        public Vector<F> vectorization()
        Description copied from class: Matrix
        Returns the vectorization of this matrix. The vectorization of a matrix is the column vector obtain by stacking the columns of the matrix on top of one another. The default implementation returns a DenseVector.
        Specified by:
        vectorization in class Matrix<F extends Field<F>>
        Returns:
        the vectorization of this matrix.
        See Also:
        Wikipedia: Vectorization.
      • copy

        public DenseMatrix<F> copy()
        Description copied from class: Matrix
        Returns a copy of this matrix allocated by the calling thread (possibly on the stack).
        Specified by:
        copy in interface javolution.lang.ValueType
        Specified by:
        copy in class Matrix<F extends Field<F>>
        Returns:
        an identical and independant copy of this matrix.