Class SparseMatrix<F extends Field<F>>
- java.lang.Object
-
- org.jscience.mathematics.vector.Matrix<F>
-
- org.jscience.mathematics.vector.SparseMatrix<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 SparseMatrix<F extends Field<F>> extends Matrix<F>
This class represents a matrix made of
sparse vectors(as rows). To create a sparse matrix made of column vectors thetranspose()method can be used. For example:[code] SparseVectorcolumn0 = SparseVector.valueOf(...); SparseVector column1 = SparseVector.valueOf(...); SparseMatrix M = SparseMatrix.valueOf(column0, column1).transpose(); [/code] As for any concrete
structure, this class is declaredfinal(otherwise most operations would have to be overridden to return the appropriate type). Specialized dense matrix should sub-classMatrixdirectly. For example:[code] // Extension through composition. final class BandMatrix> extends Matrix { private SparseMatrix _value; ... public BandMatrix opposite() { // Returns the right type. return BandMatrix.valueOf(_value.opposite()); } ... }[/code] - Version:
- 3.3, January 2, 2007
- Author:
- Jean-Marie Dautelle
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description SparseMatrix<F>adjoint()Returns the adjoint of this matrix.Fcofactor(int i, int j)Returns the cofactor of an element in this matrix.SparseMatrix<F>copy()Returns a copy of this matrixallocatedby the calling thread (possibly on the stack).Fdeterminant()Returns the determinant of this matrix.Fget(int i, int j)Returns a single element from this matrix.SparseVector<F>getColumn(int j)Returns the column identified by the specified index in this matrix.SparseVector<F>getDiagonal()Returns the diagonal vector.intgetNumberOfColumns()Returns the number of columnsnfor this matrix.intgetNumberOfRows()Returns the number of rowsmfor this matrix.SparseVector<F>getRow(int i)Returns the row identified by the specified index in this matrix.FgetZero()Returns the value of the non-set elements for this sparse matrix.SparseMatrix<F>inverse()Returns the inverse of this matrix (must be square).SparseMatrix<F>minus(Matrix<F> that)Returns the difference between this matrix and the one specified.SparseMatrix<F>opposite()Returns the negation of this matrix.SparseMatrix<F>plus(Matrix<F> that)Returns the sum of this matrix with the one specified.Matrix<F>solve(Matrix<F> y)Solves this matrix for the specified matrix (returnsxsuch asthis · x = y).SparseMatrix<F>tensor(Matrix<F> that)Returns the linear algebraic matrix tensor product of this matrix and another (Kronecker product).SparseMatrix<F>times(F k)Returns the product of this matrix by the specified factor.SparseMatrix<F>times(Matrix<F> that)Returns the product of this matrix with the one specified.SparseVector<F>times(Vector<F> v)Returns the product of this matrix by the specified vector.SparseMatrix<F>transpose()Returns the transpose of this matrix.static <F extends Field<F>>
SparseMatrix<F>valueOf(java.util.List<SparseVector<F>> rows)Returns a sparse matrix holding the row vectors from the specified collection (column vectors iftransposed).static <F extends Field<F>>
SparseMatrix<F>valueOf(Matrix<F> that, F zero)Returns a sparse matrix equivalent to the specified matrix but with the zero elements removed using the default object equality comparator.static <F extends Field<F>>
SparseMatrix<F>valueOf(Matrix<F> that, F zero, javolution.util.FastComparator<? super F> comparator)Returns a sparse matrix equivalent to the specified matrix but with the zero elements removed using the specified object equality comparator.static <F extends Field<F>>
SparseMatrix<F>valueOf(SparseVector<F>... rows)Returns a sparse matrix holding the specified row vectors (column vectors iftransposed).static <F extends Field<F>>
SparseMatrix<F>valueOf(Vector<F> diagonal, F zero)Returns the sparse square matrix having the specified diagonal vector.SparseVector<F>vectorization()Returns the vectorization of this matrix.
-
-
-
Method Detail
-
valueOf
public static <F extends Field<F>> SparseMatrix<F> valueOf(Vector<F> diagonal, F zero)
Returns the sparse square matrix having the specified diagonal vector. This method is typically used to create an identity matrix. For example:[code] SparseMatrixIDENTITY = Matrix.valueOf( DenseVector.valueOf({Real.ONE, Real.ONE, Real.ONE}), Real.ZERO); [/code] - Parameters:
diagonal- the diagonal vector.zero- value of non-diagonal elements.- Returns:
- a square matrix with
diagonalon the diagonal andzeroelsewhere.
-
valueOf
public static <F extends Field<F>> SparseMatrix<F> valueOf(SparseVector<F>... rows)
Returns a sparse matrix holding the specified row vectors (column vectors iftransposed).- 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>> SparseMatrix<F> valueOf(java.util.List<SparseVector<F>> rows)
Returns a sparse matrix holding the row vectors from the specified collection (column vectors iftransposed).- 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>> SparseMatrix<F> valueOf(Matrix<F> that, F zero)
Returns a sparse matrix equivalent to the specified matrix but with the zero elements removed using the default object equality comparator.- Parameters:
that- the matrix to convert.zero- the zero element for the sparse vector to return.- Returns:
SparseMatrix.valueOf(that, zero, FastComparator.DEFAULT)or a dense matrix holding the same elements
-
valueOf
public static <F extends Field<F>> SparseMatrix<F> valueOf(Matrix<F> that, F zero, javolution.util.FastComparator<? super F> comparator)
Returns a sparse matrix equivalent to the specified matrix but with the zero elements removed using the specified object equality comparator.- Parameters:
that- the matrix to convert.zero- the zero element for the sparse vector to return.comparator- the comparator used to determinate zero equality.- Returns:
thator a dense matrix holding the same elements as the specified matrix.
-
getZero
public F getZero()
Returns the value of the non-set elements for this sparse matrix.- Returns:
- the element corresponding to zero.
-
getNumberOfRows
public int getNumberOfRows()
Description copied from class:MatrixReturns the number of rowsmfor this matrix.- Specified by:
getNumberOfRowsin classMatrix<F extends Field<F>>- Returns:
- m, the number of rows.
-
getNumberOfColumns
public int getNumberOfColumns()
Description copied from class:MatrixReturns the number of columnsnfor this matrix.- Specified by:
getNumberOfColumnsin classMatrix<F extends Field<F>>- Returns:
- n, the number of columns.
-
get
public F get(int i, int j)
Description copied from class:MatrixReturns a single element from this matrix.
-
getRow
public SparseVector<F> getRow(int i)
Description copied from class:MatrixReturns the row identified by the specified index in this matrix.
-
getColumn
public SparseVector<F> getColumn(int j)
Description copied from class:MatrixReturns the column identified by the specified index in this matrix.
-
getDiagonal
public SparseVector<F> getDiagonal()
Description copied from class:MatrixReturns the diagonal vector.- Specified by:
getDiagonalin classMatrix<F extends Field<F>>- Returns:
- the vector holding the diagonal elements.
-
opposite
public SparseMatrix<F> opposite()
Description copied from class:MatrixReturns the negation of this matrix.
-
plus
public SparseMatrix<F> plus(Matrix<F> that)
Description copied from class:MatrixReturns the sum of this matrix with the one specified.
-
minus
public SparseMatrix<F> minus(Matrix<F> that)
Description copied from class:MatrixReturns the difference between this matrix and the one specified.
-
times
public SparseMatrix<F> times(F k)
Description copied from class:MatrixReturns the product of this matrix by the specified factor.
-
times
public SparseVector<F> times(Vector<F> v)
Description copied from class:MatrixReturns the product of this matrix by the specified vector.
-
times
public SparseMatrix<F> times(Matrix<F> that)
Description copied from class:MatrixReturns the product of this matrix with the one specified.
-
inverse
public SparseMatrix<F> inverse()
Description copied from class:MatrixReturns the inverse of this matrix (must be square).
-
determinant
public F determinant()
Description copied from class:MatrixReturns the determinant of this matrix.- Specified by:
determinantin classMatrix<F extends Field<F>>- Returns:
- this matrix determinant.
-
solve
public Matrix<F> solve(Matrix<F> y)
Description copied from class:MatrixSolves this matrix for the specified matrix (returnsxsuch asthis · x = y).
-
transpose
public SparseMatrix<F> transpose()
Description copied from class:MatrixReturns the transpose of this matrix.
-
cofactor
public F cofactor(int i, int j)
Description copied from class:MatrixReturns 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.
-
adjoint
public SparseMatrix<F> adjoint()
Description copied from class:MatrixReturns 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.
-
tensor
public SparseMatrix<F> tensor(Matrix<F> that)
Description copied from class:MatrixReturns the linear algebraic matrix tensor product of this matrix and another (Kronecker product). The default implementation returns aDenseMatrix.
-
vectorization
public SparseVector<F> vectorization()
Description copied from class:MatrixReturns 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 aDenseVector.- Specified by:
vectorizationin classMatrix<F extends Field<F>>- Returns:
- the vectorization of this matrix.
- See Also:
- Wikipedia: Vectorization.
-
copy
public SparseMatrix<F> copy()
Description copied from class:MatrixReturns a copy of this matrixallocatedby the calling thread (possibly on the stack).
-
-