Class SymmetricMatrix
- java.lang.Object
-
- dev.nm.algebra.linear.matrix.doubles.matrixtype.dense.triangle.SymmetricMatrix
-
- All Implemented Interfaces:
Matrix
,MatrixAccess
,MatrixRing
,MatrixTable
,Densifiable
,AbelianGroup<Matrix>
,Monoid<Matrix>
,Ring<Matrix>
,Table
,DeepCopyable
- Direct Known Subclasses:
BorderedHessian
,Hessian
,HilbertMatrix
public class SymmetricMatrix extends Object implements Matrix, Densifiable
A symmetric matrix is a square matrix such that its transpose equals to itself, i.e.,A[i][j] = A[j][i]
- See Also:
- Wikipedia: Symmetric matrix
-
-
Constructor Summary
Constructors Constructor Description SymmetricMatrix(double[][] data)
Construct a symmetric matrix from a 2Ddouble[][]
array.SymmetricMatrix(int dim)
Construct a symmetric matrix of dimension dim * dim.SymmetricMatrix(Matrix A)
Cast an (almost) symmetric matrix into SymmetricMatrix by averaging A(i,j) and A(j,i).SymmetricMatrix(Matrix A, boolean copyLower)
Cast an (almost) symmetric matrix into SymmetricMatrix.SymmetricMatrix(SymmetricMatrix S)
Copy constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Matrix
add(Matrix that)
this + thatSymmetricMatrix
deepCopy()
The implementation returns an instance created fromthis
by the copy constructor of the class, or justthis
if the instance itself is immutable.boolean
equals(Object obj)
double
get(int i, int j)
Get the matrix entry at [i,j].Vector
getColumn(int j)
Get the specified column in the matrix as a vector.Vector
getRow(int i)
Get the specified row in the matrix as a vector.int
hashCode()
Matrix
minus(Matrix that)
this - thatMatrix
multiply(Matrix that)
this * thatVector
multiply(Vector v)
Right multiply this matrix, A, by a vector.int
nCols()
Gets the number of columns.int
nRows()
Gets the number of rows.SymmetricMatrix
ONE()
Get an identity matrix that has the same dimension as this matrix.SymmetricMatrix
opposite()
Get the opposite of this matrix.SymmetricMatrix
scaled(double scalar)
Scale this matrix, A, by a constant.void
set(int row, int col, double value)
Set the matrix entry at [i,j] to a value.SymmetricMatrix
t()
The transpose of a symmetric matrix is the same as itself.DenseMatrix
toDense()
Densify a matrix, i.e., convert a matrix implementation to the standard dense matrix,DenseMatrix
.String
toString()
SymmetricMatrix
ZERO()
Get a zero matrix that has the same dimension as this matrix.
-
-
-
Constructor Detail
-
SymmetricMatrix
public SymmetricMatrix(int dim)
Construct a symmetric matrix of dimension dim * dim.- Parameters:
dim
- the matrix dimension
-
SymmetricMatrix
public SymmetricMatrix(double[][] data)
Construct a symmetric matrix from a 2Ddouble[][]
array. The array specifies only the lower triangular part (main diagonal inclusive) of the whole matrix. For example,
gives \[ \begin{bmatrix} 1 & 2 & 4 & 7 & 11\\ 2 & 3 & 5 & 8 & 12\\ 4 & 5 & 6 & 9 & 13\\ 7 & 8 & 9 & 10 & 14\\ 11 & 12 & 13 & 14 & 15 \end{bmatrix} \] This constructor uses lower instead of upper triangular representation for visual reason.new double[][]{ {1}, {2, 3}, {4, 5, 6}, {7, 8, 9, 10}, {11, 12, 13, 14, 15}});
- Parameters:
data
- the lower triangular specification
-
SymmetricMatrix
public SymmetricMatrix(Matrix A)
Cast an (almost) symmetric matrix into SymmetricMatrix by averaging A(i,j) and A(j,i).- Parameters:
A
- an (almost) symmetric matrix
-
SymmetricMatrix
public SymmetricMatrix(Matrix A, boolean copyLower)
Cast an (almost) symmetric matrix into SymmetricMatrix.- Parameters:
A
- an (almost) symmetric matrixcopyLower
-true
if the lower triangular portion of A is used; otherwise, the average values of A(i,j) and A(j,i) are used
-
SymmetricMatrix
public SymmetricMatrix(SymmetricMatrix S)
Copy constructor.- Parameters:
S
- a symmetric matrix
-
-
Method Detail
-
nRows
public int nRows()
Description copied from interface:Table
Gets the number of rows. Rows count from 1.
-
nCols
public int nCols()
Description copied from interface:Table
Gets the number of columns. Columns count from 1.
-
deepCopy
public SymmetricMatrix deepCopy()
Description copied from interface:DeepCopyable
The implementation returns an instance created fromthis
by the copy constructor of the class, or justthis
if the instance itself is immutable.- Specified by:
deepCopy
in interfaceDeepCopyable
- Specified by:
deepCopy
in interfaceMatrix
- Returns:
- an independent (deep) copy of the instance
-
toDense
public DenseMatrix toDense()
Description copied from interface:Densifiable
Densify a matrix, i.e., convert a matrix implementation to the standard dense matrix,DenseMatrix
.- Specified by:
toDense
in interfaceDensifiable
- Returns:
- a matrix representation in
DenseMatrix
-
set
public void set(int row, int col, double value) throws MatrixAccessException
Description copied from interface:MatrixAccess
Set the matrix entry at [i,j] to a value. This is the only method that may change a matrix.- Specified by:
set
in interfaceMatrixAccess
- Parameters:
row
- the row indexcol
- the column indexvalue
- the value to set A[i,j] to- Throws:
MatrixAccessException
- if i or j is out of range
-
get
public double get(int i, int j) throws MatrixAccessException
Description copied from interface:MatrixAccess
Get the matrix entry at [i,j].- Specified by:
get
in interfaceMatrixAccess
- Parameters:
i
- the row indexj
- the column index- Returns:
- A[i,j]
- Throws:
MatrixAccessException
- if i or j is out of range
-
getRow
public Vector getRow(int i) throws MatrixAccessException
Description copied from interface:Matrix
Get the specified row in the matrix as a vector.- Specified by:
getRow
in interfaceMatrix
- Parameters:
i
- the row index- Returns:
- the vector A[i, ]
- Throws:
MatrixAccessException
- when i < 1, or when i > the number of rows
-
getColumn
public Vector getColumn(int j) throws MatrixAccessException
Description copied from interface:Matrix
Get the specified column in the matrix as a vector.- Specified by:
getColumn
in interfaceMatrix
- Parameters:
j
- the column index- Returns:
- a vector A[, j]
- Throws:
MatrixAccessException
- when j < 1, or when j > the number of columns
-
add
public Matrix add(Matrix that)
Description copied from interface:MatrixRing
this + that- Specified by:
add
in interfaceAbelianGroup<Matrix>
- Specified by:
add
in interfaceMatrixRing
- Parameters:
that
- a matrix- Returns:
- the sum of
this
andthat
-
minus
public Matrix minus(Matrix that)
Description copied from interface:MatrixRing
this - that- Specified by:
minus
in interfaceAbelianGroup<Matrix>
- Specified by:
minus
in interfaceMatrixRing
- Parameters:
that
- a matrix- Returns:
- the difference between
this
andthat
-
multiply
public Matrix multiply(Matrix that)
Description copied from interface:MatrixRing
this * that- Specified by:
multiply
in interfaceMatrixRing
- Specified by:
multiply
in interfaceMonoid<Matrix>
- Parameters:
that
- a matrix- Returns:
- the product of
this
andthat
-
t
public SymmetricMatrix t()
The transpose of a symmetric matrix is the same as itself.- Specified by:
t
in interfaceMatrixRing
- Returns:
- a copy of itself
-
scaled
public SymmetricMatrix scaled(double scalar)
Description copied from interface:Matrix
Scale this matrix, A, by a constant.
-
opposite
public SymmetricMatrix opposite()
Description copied from interface:MatrixRing
Get the opposite of this matrix.- Specified by:
opposite
in interfaceAbelianGroup<Matrix>
- Specified by:
opposite
in interfaceMatrixRing
- Returns:
- -this
- See Also:
- Wikipedia: Additive inverse
-
ZERO
public SymmetricMatrix ZERO()
Description copied from interface:MatrixRing
Get a zero matrix that has the same dimension as this matrix.- Specified by:
ZERO
in interfaceAbelianGroup<Matrix>
- Specified by:
ZERO
in interfaceMatrixRing
- Returns:
- the 0 matrix
-
ONE
public SymmetricMatrix ONE()
Description copied from interface:MatrixRing
Get an identity matrix that has the same dimension as this matrix. For a non-square matrix, it zeros out the rows (columns) with index > nCols (nRows).- Specified by:
ONE
in interfaceMatrixRing
- Specified by:
ONE
in interfaceMonoid<Matrix>
- Returns:
- an identity matrix
-
multiply
public Vector multiply(Vector v)
Description copied from interface:Matrix
Right multiply this matrix, A, by a vector.
-
-