# 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]
• ## Constructor Summary

Constructors
Constructor
Description
SymmetricMatrix(double[][] data)
Construct a symmetric matrix from a 2D double[][] 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

Modifier and Type
Method
Description
Matrix
add(Matrix that)
this + that
SymmetricMatrix
deepCopy()
The implementation returns an instance created from this by the copy constructor of the class, or just this 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 - that
Matrix
multiply(Matrix that)
this * that
Vector
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.

### Methods inherited from class java.lang.Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

### Methods inherited from interface dev.nm.algebra.linear.matrix.doubles.Matrix

toCSV
• ## Constructor Details

• ### 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 2D double[][] array. The array specifies only the lower triangular part (main diagonal inclusive) of the whole matrix. For example,
 new double[][]{ {1}, {2, 3}, {4, 5, 6}, {7, 8, 9, 10}, {11, 12, 13, 14, 15}}); 
gives $\begin{bmatrix} 1 invalid input: '&' 2 invalid input: '&' 4 invalid input: '&' 7 invalid input: '&' 11\\ 2 invalid input: '&' 3 invalid input: '&' 5 invalid input: '&' 8 invalid input: '&' 12\\ 4 invalid input: '&' 5 invalid input: '&' 6 invalid input: '&' 9 invalid input: '&' 13\\ 7 invalid input: '&' 8 invalid input: '&' 9 invalid input: '&' 10 invalid input: '&' 14\\ 11 invalid input: '&' 12 invalid input: '&' 13 invalid input: '&' 14 invalid input: '&' 15 \end{bmatrix}$ This constructor uses lower instead of upper triangular representation for visual reason.
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 matrix
copyLower - 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
Copy constructor.
Parameters:
S - a symmetric matrix
• ## Method Details

• ### nRows

public int nRows()
Description copied from interface: Table
Gets the number of rows. Rows count from 1.
Specified by:
nRows in interface Table
Returns:
the number of rows
• ### nCols

public int nCols()
Description copied from interface: Table
Gets the number of columns. Columns count from 1.
Specified by:
nCols in interface Table
Returns:
the number of columns
• ### deepCopy

public SymmetricMatrix deepCopy()
Description copied from interface: DeepCopyable
The implementation returns an instance created from this by the copy constructor of the class, or just this if the instance itself is immutable.
Specified by:
deepCopy in interface DeepCopyable
Specified by:
deepCopy in interface Matrix
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 interface Densifiable
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 interface MatrixAccess
Parameters:
row - the row index
col - the column index
value - 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 interface MatrixAccess
Parameters:
i - the row index
j - 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 interface Matrix
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 interface Matrix
Parameters:
j - the column index
Returns:
a vector A[, j]
Throws:
MatrixAccessException - when j < 1, or when j > the number of columns

Description copied from interface: MatrixRing
this + that
Specified by:
add in interface AbelianGroup<Matrix>
Specified by:
add in interface MatrixRing
Parameters:
that - a matrix
Returns:
the sum of this and that
• ### minus

public Matrix minus(Matrix that)
Description copied from interface: MatrixRing
this - that
Specified by:
minus in interface AbelianGroup<Matrix>
Specified by:
minus in interface MatrixRing
Parameters:
that - a matrix
Returns:
the difference between this and that
• ### multiply

public Matrix multiply(Matrix that)
Description copied from interface: MatrixRing
this * that
Specified by:
multiply in interface MatrixRing
Specified by:
multiply in interface Monoid<Matrix>
Parameters:
that - a matrix
Returns:
the product ofthis and that
• ### t

public SymmetricMatrix t()
The transpose of a symmetric matrix is the same as itself.
Specified by:
t in interface MatrixRing
Returns:
a copy of itself
• ### scaled

public SymmetricMatrix scaled(double scalar)
Description copied from interface: Matrix
Scale this matrix, A, by a constant.
Specified by:
scaled in interface Matrix
Parameters:
scalar - a double
Returns:
cA
• ### opposite

public SymmetricMatrix opposite()
Description copied from interface: MatrixRing
Get the opposite of this matrix.
Specified by:
opposite in interface AbelianGroup<Matrix>
Specified by:
opposite in interface MatrixRing
Returns:
-this
• ### 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 interface AbelianGroup<Matrix>
Specified by:
ZERO in interface MatrixRing
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 interface MatrixRing
Specified by:
ONE in interface Monoid<Matrix>
Returns:
an identity matrix
• ### multiply

public Vector multiply(Vector v)
Description copied from interface: Matrix
Right multiply this matrix, A, by a vector.
Specified by:
multiply in interface Matrix
Parameters:
v - a vector
Returns:
Av, a vector
• ### toString

public String toString()
Overrides:
toString in class Object
• ### equals

public boolean equals(Object obj)
Overrides:
equals in class Object
• ### hashCode

public int hashCode()
Overrides:
hashCode in class Object