Class DiagonalMatrix
- java.lang.Object
-
- dev.nm.algebra.linear.matrix.doubles.matrixtype.dense.diagonal.DiagonalMatrix
-
- All Implemented Interfaces:
Matrix
,MatrixAccess
,MatrixRing
,MatrixTable
,Densifiable
,AbelianGroup<Matrix>
,Monoid<Matrix>
,Ring<Matrix>
,Table
,DeepCopyable
public class DiagonalMatrix extends Object
A diagonal matrix has non-zero entries only on the main diagonal.- See Also:
- Wikipedia: Diagonal matrix
-
-
Constructor Summary
Constructors Constructor Description DiagonalMatrix(double[] data)
Constructs a diagonal matrix from adouble[]
.DiagonalMatrix(double[] data, int nRows, int nCols)
DiagonalMatrix(int dim)
Constructs a 0 diagonal matrix of dimension dim * dim.DiagonalMatrix(int nRows, int nCols)
DiagonalMatrix(DiagonalMatrix that)
Copy constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Matrix
add(Matrix that)
Computes the sum of two diagonal matrices.DiagonalMatrix
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.DenseVector
getDiagonal()
Gets the main diagonal of the matrix.Vector
getRow(int i)
Get the specified row in the matrix as a vector.DenseVector
getSubDiagonal()
Gets the sub-diagonal of the matrix.DenseVector
getSuperDiagonal()
Gets the super-diagonal of the matrix.int
hashCode()
Matrix
minus(Matrix that)
Computes the difference between two diagonal matrices.Matrix
multiply(Matrix that)
Computes the product of two diagonal matrices.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.DiagonalMatrix
ONE()
Get an identity matrix that has the same dimension as this matrix.DiagonalMatrix
opposite()
Get the opposite of this matrix.DiagonalMatrix
scaled(double scalar)
Scale this matrix, A, by a constant.void
set(int i, int j, double value)
Set the matrix entry at [i,j] to a value.DiagonalMatrix
t()
The transpose of a diagonal 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()
DiagonalMatrix
ZERO()
Get a zero matrix that has the same dimension as this matrix.
-
-
-
Constructor Detail
-
DiagonalMatrix
public DiagonalMatrix(double[] data)
Constructs a diagonal matrix from adouble[]
. For example,
gives \[ \begin{bmatrix} 1 & 0 & 0 & 0 & 0\\ 0 & 2 & 0 & 0 & 0\\ 0 & 0 & 3 & 0 & 0\\ 0 & 0 & 0 & 4 & 0\\ 0 & 0 & 0 & 0 & 5 \end{bmatrix} \]new double[][]{ {1, 2, 3, 4, 5}, }
- Parameters:
data
- the 1D array input
-
DiagonalMatrix
public DiagonalMatrix(double[] data, int nRows, int nCols)
-
DiagonalMatrix
public DiagonalMatrix(int dim)
Constructs a 0 diagonal matrix of dimension dim * dim.- Parameters:
dim
- the matrix dimension
-
DiagonalMatrix
public DiagonalMatrix(int nRows, int nCols)
-
DiagonalMatrix
public DiagonalMatrix(DiagonalMatrix that)
Copy constructor.- Parameters:
that
- a diagonal matrix
-
-
Method Detail
-
deepCopy
public DiagonalMatrix 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.- Returns:
- an independent (deep) copy of the instance
-
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.
-
add
public Matrix add(Matrix that)
Computes the sum of two diagonal matrices.- Specified by:
add
in interfaceAbelianGroup<Matrix>
- Specified by:
add
in interfaceMatrixRing
- Parameters:
that
- a diagonal matrix- Returns:
this
+that
-
minus
public Matrix minus(Matrix that)
Computes the difference between two diagonal matrices.- Specified by:
minus
in interfaceAbelianGroup<Matrix>
- Specified by:
minus
in interfaceMatrixRing
- Parameters:
that
- a diagonal matrix- Returns:
this
-that
-
multiply
public Matrix multiply(Matrix that)
Computes the product of two diagonal matrices.- Specified by:
multiply
in interfaceMatrixRing
- Specified by:
multiply
in interfaceMonoid<Matrix>
- Parameters:
that
- a diagonal matrix- Returns:
this
*that
-
multiply
public Vector multiply(Vector v)
Description copied from interface:Matrix
Right multiply this matrix, A, by a vector.
-
scaled
public DiagonalMatrix scaled(double scalar)
Description copied from interface:Matrix
Scale this matrix, A, by a constant.- Parameters:
scalar
- a double- Returns:
- cA
-
opposite
public DiagonalMatrix opposite()
Description copied from interface:MatrixRing
Get the opposite of this matrix.- Returns:
- -this
- See Also:
- Wikipedia: Additive inverse
-
t
public DiagonalMatrix t()
The transpose of a diagonal matrix is the same as itself.- Returns:
- a copy
-
ZERO
public DiagonalMatrix ZERO()
Description copied from interface:MatrixRing
Get a zero matrix that has the same dimension as this matrix.- Returns:
- the 0 matrix
-
ONE
public DiagonalMatrix 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).- Returns:
- an identity matrix
-
toString
public String toString()
-
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
-
getDiagonal
public DenseVector getDiagonal()
Gets the main diagonal of the matrix.- Returns:
- the main diagonal
-
getSuperDiagonal
public DenseVector getSuperDiagonal()
Gets the super-diagonal of the matrix.- Returns:
- the super-diagonal
-
getSubDiagonal
public DenseVector getSubDiagonal()
Gets the sub-diagonal of the matrix.- Returns:
- the sub-diagonal
-
set
public void set(int i, int j, 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:
i
- the row indexj
- 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)
Description copied from interface:Matrix
Get the specified row in the matrix as a vector.
-
getColumn
public Vector getColumn(int j)
Description copied from interface:Matrix
Get the specified column in the matrix as a vector.
-
-