public class LowerSPDDenseMatrix extends LowerSymmDenseMatrix
LowerSymmDenseMatrix
. This
class does not enforce the SPD property, but serves as a tag so that more
efficient algorithms can be used in the solvers.Matrix.Norm
numColumns, numRows
Constructor and Description |
---|
LowerSPDDenseMatrix(int n)
Constructor for LowerSPDDenseMatrix
|
LowerSPDDenseMatrix(Matrix A)
Constructor for LowerSPDDenseMatrix
|
LowerSPDDenseMatrix(Matrix A,
boolean deep)
Constructor for LowerSPDDenseMatrix
|
Modifier and Type | Method and Description |
---|---|
LowerSPDDenseMatrix |
copy()
Creates a deep copy of the matrix
|
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,
Matrix C)
A = alpha*C*CT + A . |
Matrix |
rank1(double alpha,
Vector x,
Vector y)
A = alpha*x*yT + A . |
Matrix |
rank2(double alpha,
Matrix B,
Matrix C)
A = alpha*B*CT + alpha*C*BT + A . |
Matrix |
rank2(double alpha,
Vector x,
Vector y)
A = alpha*x*yT + alpha*y*xT + A . |
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 |
transAmultAdd(double alpha,
Matrix B,
Matrix C)
C = alpha*AT*B + C |
Vector |
transMultAdd(double alpha,
Vector x,
Vector y)
y = alpha*AT*x + y |
Matrix |
transpose()
Transposes the matrix in-place.
|
Matrix |
transRank1(double alpha,
Matrix C)
A = alpha*CT*C + A The matrices must be
square and of the same size |
Matrix |
transRank2(double alpha,
Matrix B,
Matrix C)
A = alpha*BT*C + alpha*CT*B + A . |
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, get, set
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, rank2, rank2, scale, set, transABmult, transABmult, transABmultAdd, transABmultAdd, transAmult, transAmult, transAmultAdd, transBmult, transBmult, transBmultAdd, transBmultAdd, transMult, transMult, transMultAdd, transpose, transRank1, transRank2
public LowerSPDDenseMatrix(int n)
n
- Size of the matrix. Since the matrix must be square, this
equals both the number of rows and columnspublic LowerSPDDenseMatrix(Matrix A)
A
- Matrix to copy. It must be a square matrix, and only the lower
triangular part is copiedpublic LowerSPDDenseMatrix(Matrix A, boolean deep)
A
- Matrix to copy. It must be a square matrix, and only the lower
triangular part is copieddeep
- False for a shallow copy, else it'll be a deep copy. For
shallow copies, A
must be a dense matrixpublic LowerSPDDenseMatrix copy()
Matrix
copy
in interface Matrix
copy
in class LowerSymmDenseMatrix
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 solverpublic 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 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 Matrix rank2(double alpha, Vector x, Vector y)
Matrix
A = alpha*x*yT + alpha*y*xT + A
.
The matrix must be square, and the vectors of the same lengthrank2
in interface Matrix
rank2
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 rank1(double alpha, Matrix C)
Matrix
A = alpha*C*CT + A
. The matrices must be
square and of the same sizerank1
in interface Matrix
rank1
in class AbstractMatrix
public Matrix transRank1(double alpha, Matrix C)
Matrix
A = alpha*CT*C + A
The matrices must be
square and of the same sizetransRank1
in interface Matrix
transRank1
in class AbstractMatrix
public Matrix rank2(double alpha, Matrix B, Matrix C)
Matrix
A = alpha*B*CT + alpha*C*BT + A
.
This matrix must be squarerank2
in interface Matrix
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
public Matrix transRank2(double alpha, Matrix B, Matrix C)
Matrix
A = alpha*BT*C + alpha*CT*B + A
.
This matrix must be squaretransRank2
in interface Matrix
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
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 Matrix transpose()
Matrix
transpose
in interface Matrix
transpose
in class AbstractMatrix
public double[] getData()
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 © 2013. All Rights Reserved.