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 the
transpose()
method can be used.
For example:[code]
SparseVector
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 BandMatrix
Modifier and Type | Method and Description |
---|---|
SparseMatrix<F> |
adjoint()
Returns the adjoint of this matrix.
|
F |
cofactor(int i,
int j)
Returns the cofactor of an element in this matrix.
|
SparseMatrix<F> |
copy()
Returns a copy of this matrix
allocated
by the calling thread (possibly on the stack). |
F |
determinant()
Returns the determinant of this matrix.
|
F |
get(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.
|
int |
getNumberOfColumns()
Returns the number of columns
n for this matrix. |
int |
getNumberOfRows()
Returns the number of rows
m for this matrix. |
SparseVector<F> |
getRow(int i)
Returns the row identified by the specified index in this matrix.
|
F |
getZero()
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 (returns
x
such as this · 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>> |
valueOf(java.util.List<SparseVector<F>> rows)
Returns a sparse matrix holding the row vectors from the specified
collection (column vectors if
transposed ). |
static <F extends Field<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>> |
valueOf(Matrix<F> that,
F zero,
<any> 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>> |
valueOf(SparseVector<F>... rows)
Returns a sparse matrix holding the specified row vectors
(column vectors if
transposed ). |
static <F extends Field<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.
|
public static <F extends Field<F>> SparseMatrix<F> valueOf(Vector<F> diagonal, F zero)
diagonal
- the diagonal vector.zero
- value of non-diagonal elements.diagonal
on the diagonal and
zero
elsewhere.public static <F extends Field<F>> SparseMatrix<F> valueOf(SparseVector<F>... rows)
transposed
).rows
- the row vectors.DimensionException
- if the rows do not have the same dimension.public static <F extends Field<F>> SparseMatrix<F> valueOf(java.util.List<SparseVector<F>> rows)
transposed
).rows
- the list of row vectors.DimensionException
- if the rows do not have the same dimension.public static <F extends Field<F>> SparseMatrix<F> valueOf(Matrix<F> that, F zero)
that
- the matrix to convert.zero
- the zero element for the sparse vector to return.SparseMatrix.valueOf(that, zero, FastComparator.DEFAULT)
or a dense matrix holding the same elementspublic static <F extends Field<F>> SparseMatrix<F> valueOf(Matrix<F> that, F zero, <any> comparator)
that
- the matrix to convert.zero
- the zero element for the sparse vector to return.comparator
- the comparator used to determinate zero equality.that
or a dense matrix holding the same elements
as the specified matrix.public F getZero()
public int getNumberOfRows()
Matrix
m
for this matrix.getNumberOfRows
in class Matrix<F extends Field<F>>
public int getNumberOfColumns()
Matrix
n
for this matrix.getNumberOfColumns
in class Matrix<F extends Field<F>>
public F get(int i, int j)
Matrix
public SparseVector<F> getRow(int i)
Matrix
public SparseVector<F> getColumn(int j)
Matrix
public SparseVector<F> getDiagonal()
Matrix
getDiagonal
in class Matrix<F extends Field<F>>
public SparseMatrix<F> opposite()
Matrix
public SparseMatrix<F> plus(Matrix<F> that)
Matrix
public SparseMatrix<F> minus(Matrix<F> that)
Matrix
public SparseMatrix<F> times(F k)
Matrix
public SparseVector<F> times(Vector<F> v)
Matrix
public SparseMatrix<F> times(Matrix<F> that)
Matrix
public SparseMatrix<F> inverse()
Matrix
public F determinant()
Matrix
determinant
in class Matrix<F extends Field<F>>
public Matrix<F> solve(Matrix<F> y)
Matrix
x
such as this · x = y
).public SparseMatrix<F> transpose()
Matrix
public F cofactor(int i, int j)
Matrix
public SparseMatrix<F> adjoint()
Matrix
public SparseMatrix<F> tensor(Matrix<F> that)
Matrix
DenseMatrix
.public SparseVector<F> vectorization()
Matrix
DenseVector
.vectorization
in class Matrix<F extends Field<F>>
public SparseMatrix<F> copy()
Matrix
allocated
by the calling thread (possibly on the stack).