public class DenseMatrix extends AbstractMatrix
a11 | a12 | a13 | a14 |
a21 | a22 | a23 | a24 |
a31 | a32 | a33 | a34 |
a41 | a42 | a43 | a44 |
is stored column major in a single array, as follows:
a11 | a21 | a31 | a41 | a12 | a22 | a32 | a42 | a13 | a23 | a33 | a43 | a14 | a24 | a34 | a44 |
Matrix.Norm
numColumns, numRows
Constructor and Description |
---|
DenseMatrix(double[][] values)
Constructor for DenseMatrix.
|
DenseMatrix(int numRows,
int numColumns)
Constructor for DenseMatrix
|
DenseMatrix(int numRows,
int numColumns,
double[] values,
boolean deep) |
DenseMatrix(Matrix A)
Constructor for DenseMatrix
|
DenseMatrix(Matrix A,
boolean deep)
Constructor for DenseMatrix
|
DenseMatrix(MatrixVectorReader r)
Constructor for DenseMatrix
|
DenseMatrix(Vector x)
Constructor for DenseMatrix.
|
DenseMatrix(Vector[] x)
Constructor for DenseMatrix.
|
DenseMatrix(Vector x,
boolean deep)
Constructor for DenseMatrix.
|
Modifier and Type | Method and Description |
---|---|
void |
add(int row,
int column,
double value)
A(row,column) += value |
DenseMatrix |
copy()
Creates a deep copy of the matrix
|
double |
get(int row,
int column)
Returns
A(row,column) |
double[] |
getData()
Returns the matrix contents.
|
Matrix |
multAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*A*B + C |
Vector |
multAdd(double alpha,
Vector x,
Vector y)
y = alpha*A*x + y |
Matrix |
rank1(double alpha,
Vector x,
Vector y)
A = alpha*x*yT + A . |
void |
set(int row,
int column,
double value)
A(row,column) = value |
Matrix |
set(Matrix B)
A=B . |
Matrix |
solve(Matrix B,
Matrix X)
X = A\B . |
Vector |
solve(Vector b,
Vector x)
x = A\b . |
String |
toString() |
Matrix |
transABmultAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*AT*BT + C |
Matrix |
transAmultAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*AT*B + C |
Matrix |
transBmultAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*A*BT + C |
Vector |
transMultAdd(double alpha,
Vector x,
Vector y)
y = alpha*AT*x + y |
Matrix |
transSolve(Matrix B,
Matrix X)
X = AT\B . |
Vector |
transSolve(Vector b,
Vector x)
x = AT\b . |
Matrix |
zero()
Zeros all the entries in the matrix, while preserving any underlying
structure.
|
add, add, check, checkMultAdd, checkMultAdd, checkRank1, checkRank1, checkRank2, checkRank2, checkSize, checkSolve, checkSolve, checkTransABmultAdd, checkTransAmultAdd, checkTransBmultAdd, checkTransMultAdd, checkTranspose, checkTranspose, checkTransRank1, checkTransRank2, isSquare, iterator, max, max, mult, mult, mult, mult, multAdd, multAdd, norm, norm1, normF, normInf, numColumns, numRows, rank1, rank1, rank1, rank1, rank1, rank2, rank2, rank2, rank2, scale, set, transABmult, transABmult, transABmultAdd, transAmult, transAmult, transAmultAdd, transBmult, transBmult, transBmultAdd, transMult, transMult, transMultAdd, transpose, transpose, transRank1, transRank1, transRank2, transRank2
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
forEach, spliterator
public DenseMatrix(MatrixVectorReader r) throws IOException
r
- Reader to get the matrix fromIOException
public DenseMatrix(int numRows, int numColumns)
numRows
- Number of rowsnumColumns
- Number of columnspublic DenseMatrix(Matrix A)
A
- Matrix to copy. A deep copy is madepublic DenseMatrix(Matrix A, boolean deep)
A
- Matrix to copy contents fromdeep
- If true, A
is copied, else a shallow copy is made
and the matrices share underlying storage. For this,
A
must be a dense matrixpublic DenseMatrix(Vector x, boolean deep)
x
- Vector to copy from. This will form this matrix' single columndeep
- If true, x is copied, if false, the internal storage of this
matrix is the same as that of the vector. In that case,
x
must be a DenseVector
public DenseMatrix(Vector x)
x
- The vector which forms this matrix' single column. It is
copied, not referencedpublic DenseMatrix(Vector[] x)
x
- Vectors which forms the columns of this matrix. Every vector
must have the same sizepublic DenseMatrix(double[][] values)
values
- Arrays to copy from. Every sub-array must have the same sizepublic DenseMatrix(int numRows, int numColumns, double[] values, boolean deep)
numRows
- numColumns
- values
- deep
- if true the array will be cloned, if false the array is used
directly.public DenseMatrix copy()
Matrix
copy
in interface Matrix
copy
in class AbstractMatrix
public Matrix multAdd(double alpha, Matrix B, Matrix C)
Matrix
C = alpha*A*B + C
multAdd
in interface Matrix
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()
public Matrix transAmultAdd(double alpha, Matrix B, Matrix C)
Matrix
C = alpha*AT*B + C
transAmultAdd
in interface Matrix
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()
public Matrix transBmultAdd(double alpha, Matrix B, Matrix C)
Matrix
C = alpha*A*BT + C
transBmultAdd
in interface Matrix
transBmultAdd
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()
public Matrix transABmultAdd(double alpha, Matrix B, Matrix C)
Matrix
C = alpha*AT*BT + C
transABmultAdd
in interface Matrix
transABmultAdd
in class AbstractMatrix
B
- Matrix such that B.numColumns() == A.numRows()
and B.numRows() == C.numColumns()
C
- Matrix such that C.numRows() == A.numColumns()
and B.numRows() == C.numColumns()
public Matrix rank1(double alpha, Vector x, Vector y)
Matrix
A = alpha*x*yT + A
. The matrix must be square,
and the vectors of the same lengthrank1
in interface Matrix
rank1
in class AbstractMatrix
public Vector multAdd(double alpha, Vector x, Vector y)
Matrix
y = alpha*A*x + y
multAdd
in interface Matrix
multAdd
in class AbstractMatrix
x
- Vector of size A.numColumns()
y
- Vector of size A.numRows()
public Vector transMultAdd(double alpha, Vector x, Vector y)
Matrix
y = alpha*AT*x + y
transMultAdd
in interface Matrix
transMultAdd
in class AbstractMatrix
x
- Vector of size A.numRows()
y
- Vector of size A.numColumns()
public Matrix solve(Matrix B, Matrix X)
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
solversolve
in interface Matrix
solve
in class AbstractMatrix
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
public Vector solve(Vector b, Vector x)
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
solversolve
in interface Matrix
solve
in class AbstractMatrix
b
- Vector of size A.numRows()
x
- Vector of size A.numColumns()
public Matrix transSolve(Matrix B, Matrix X)
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
solvertransSolve
in interface Matrix
transSolve
in class AbstractMatrix
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
public Vector transSolve(Vector b, Vector x)
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 solvertransSolve
in interface Matrix
transSolve
in class AbstractMatrix
b
- Vector of size A.numColumns()
x
- Vector of size A.numRows()
public double[] getData()
public void add(int row, int column, double value)
Matrix
A(row,column) += value
add
in interface Matrix
add
in class AbstractMatrix
public void set(int row, int column, double value)
Matrix
A(row,column) = value
set
in interface Matrix
set
in class AbstractMatrix
public double get(int row, int column)
Matrix
A(row,column)
get
in interface Matrix
get
in class AbstractMatrix
public Matrix set(Matrix B)
Matrix
A=B
. The matrices must be of the same sizeset
in interface Matrix
set
in class AbstractMatrix
public Matrix zero()
Matrix
zero
in interface Matrix
zero
in class AbstractMatrix
public String toString()
toString
in class AbstractMatrix
Copyright © 2015. All Rights Reserved.