org.jscience.mathematics.algebraic.matrices
Class IntegerDiagonalMatrix

java.lang.Object
  extended by org.jscience.mathematics.algebraic.AbstractHypermatrix
      extended by org.jscience.mathematics.algebraic.AbstractMatrix
          extended by org.jscience.mathematics.algebraic.matrices.AbstractIntegerMatrix
              extended by org.jscience.mathematics.algebraic.matrices.AbstractIntegerSquareMatrix
                  extended by org.jscience.mathematics.algebraic.matrices.IntegerDiagonalMatrix
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Algebra.Member, BandedMatrix, DiagonalMatrix, Ring.Member, AbelianGroup.Member, Hypermatrix, Matrix, Module.Member, VectorSpace.Member, SquareMatrix, TridiagonalMatrix, Member

public class IntegerDiagonalMatrix
extends AbstractIntegerSquareMatrix
implements java.lang.Cloneable, java.io.Serializable, DiagonalMatrix

The IntegerDiagonalMatrix class provides an object for encapsulating integer diagonal matrices.

See Also:
Serialized Form

Field Summary
protected  int[] diag
          Diagonal data.
 
Fields inherited from class org.jscience.mathematics.algebraic.matrices.AbstractIntegerSquareMatrix
LU, LUpivot
 
Constructor Summary
IntegerDiagonalMatrix(int size)
          Constructs an empty matrix.
IntegerDiagonalMatrix(int[] array)
          Constructs a matrix by wrapping an array containing the diagonal elements.
IntegerDiagonalMatrix(int[][] array)
          Constructs a matrix from an array.
IntegerDiagonalMatrix(IntegerDiagonalMatrix mat)
          Copy constructor.
 
Method Summary
 AbstractIntegerSquareMatrix add(AbstractIntegerSquareMatrix m)
          Returns the addition of this matrix and another.
 IntegerDiagonalMatrix add(IntegerDiagonalMatrix m)
          Returns the addition of this matrix and another.
 IntegerSquareMatrix add(IntegerSquareMatrix m)
           
 IntegerTridiagonalMatrix add(IntegerTridiagonalMatrix m)
          Returns the addition of this matrix and another.
 AbstractDoubleSquareMatrix[] choleskyDecompose()
          Returns the Cholesky decomposition of this matrix.
 java.lang.Object clone()
          Clone matrix into a new matrix.
 int det()
          Returns the determinant.
 boolean equals(AbstractIntegerMatrix m, double tol)
          Compares two ${nativeTyp} matrices for equality.
 double frobeniusNorm()
          Returns the Frobenius (l2) norm.
 int getK1()
          DOCUMENT ME!
 int getK2()
          DOCUMENT ME!
 int getPrimitiveElement(int i, int j)
          Returns an element of the matrix.
static IntegerDiagonalMatrix identity(int size)
          Creates an identity matrix.
 int infNorm()
          Returns the linfinity-norm.
 AbstractDoubleSquareMatrix inverse()
          Returns the inverse of this matrix.
 boolean isSymmetric()
          Returns true if this matrix is symmetric.
 AbstractDoubleSquareMatrix[] luDecompose(int[] pivot)
          Returns the LU decomposition of this matrix.
 AbstractDoubleMatrix mapElements(PrimitiveMapping f)
          Applies a function on all the matrix elements.
 AbstractIntegerSquareMatrix multiply(AbstractIntegerSquareMatrix m)
          Returns the multiplication of this matrix and another.
 AbstractIntegerVector multiply(AbstractIntegerVector v)
          Returns the multiplication of a vector by this matrix.
 IntegerDiagonalMatrix multiply(IntegerDiagonalMatrix m)
           
 IntegerSquareMatrix multiply(IntegerSquareMatrix m)
           
 IntegerTridiagonalMatrix multiply(IntegerTridiagonalMatrix m)
           
 double operatorNorm()
          Returns the operator norm.
 AbstractDoubleSquareMatrix[] qrDecompose()
          Returns the QR decomposition of this matrix.
 AbstractIntegerMatrix scalarMultiply(int x)
          Returns the multiplication of this matrix by a scalar.
 int scalarProduct(AbstractIntegerSquareMatrix m)
          Returns the scalar product of this matrix and another.
 int scalarProduct(IntegerDiagonalMatrix m)
           
 int scalarProduct(IntegerSquareMatrix m)
           
 int scalarProduct(IntegerTridiagonalMatrix m)
           
 void setAllElements(int r)
          Sets the value of all elements of the matrix.
 void setElement(int i, int j, int x)
          Sets the value of an element of the matrix.
 AbstractDoubleSquareMatrix[] singularValueDecompose()
          Returns the singular value decomposition of this matrix.
 AbstractIntegerSquareMatrix subtract(AbstractIntegerSquareMatrix m)
          Returns the subtraction of this matrix by another.
 IntegerDiagonalMatrix subtract(IntegerDiagonalMatrix m)
          Returns the subtraction of this matrix and another.
 IntegerSquareMatrix subtract(IntegerSquareMatrix m)
           
 IntegerTridiagonalMatrix subtract(IntegerTridiagonalMatrix m)
          Returns the subtraction of this matrix and another.
 AbstractComplexMatrix toComplexMatrix()
          Converts this matrix to a complex matrix.
 AbstractDoubleMatrix toDoubleMatrix()
          Converts this matrix to a double matrix.
 int[][] toPrimitiveArray()
          Projects the matrix to an array.
 java.lang.String toString()
          Returns a string representing this matrix.
 int trace()
          Returns the trace.
 Matrix transpose()
          Returns the transpose of this matrix.
 
Methods inherited from class org.jscience.mathematics.algebraic.matrices.AbstractIntegerSquareMatrix
add, directSum, isUnitary, negate, scalarProduct, subtract, tensorProduct
 
Methods inherited from class org.jscience.mathematics.algebraic.matrices.AbstractIntegerMatrix
abs, add, directSum, equals, equals, getColumn, getElement, getMatrixAsColumns, getMatrixAsRows, getRow, getSet, getSubMatrix, hashCode, horizontalAxisSymmetry, mass, max, mean, min, multiply, multiply, read, reverse, scalarDivide, scalarMultiply, setColumn, setRow, setSubMatrix, subtract, tensorProduct, verticalAxisSymmetry
 
Methods inherited from class org.jscience.mathematics.algebraic.AbstractMatrix
getElement, getInvalidElementMsg, numColumns, numRows, print, print, print, print, toArray, toArray
 
Methods inherited from class org.jscience.mathematics.algebraic.AbstractHypermatrix
getDimensions, numDimensions, numElements, numElements, toArray
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.jscience.mathematics.algebraic.Matrix
getColumn, getElement, getRow, numColumns, numRows, toArray
 
Methods inherited from interface org.jscience.mathematics.algebraic.Hypermatrix
getDimensions, getElement, numDimensions, numElements, numElements, toArray, toArray
 

Field Detail

diag

protected final int[] diag
Diagonal data.

Constructor Detail

IntegerDiagonalMatrix

public IntegerDiagonalMatrix(int size)
Constructs an empty matrix.

Parameters:
size - the number of rows/columns

IntegerDiagonalMatrix

public IntegerDiagonalMatrix(int[][] array)
Constructs a matrix from an array. Any non-diagonal elements in the array are ignored.

Parameters:
array - an assigned value
Throws:
IllegalDimensionException - If the array is not square.

IntegerDiagonalMatrix

public IntegerDiagonalMatrix(int[] array)
Constructs a matrix by wrapping an array containing the diagonal elements.

Parameters:
array - an assigned value

IntegerDiagonalMatrix

public IntegerDiagonalMatrix(IntegerDiagonalMatrix mat)
Copy constructor.

Parameters:
mat - an assigned value
Method Detail

identity

public static IntegerDiagonalMatrix identity(int size)
Creates an identity matrix.

Parameters:
size - the number of rows/columns

equals

public boolean equals(AbstractIntegerMatrix m,
                      double tol)
Compares two ${nativeTyp} matrices for equality.

Overrides:
equals in class AbstractIntegerMatrix
Parameters:
m - a int matrix

getK1

public int getK1()
Description copied from interface: BandedMatrix
DOCUMENT ME!

Specified by:
getK1 in interface BandedMatrix
Returns:
DOCUMENT ME!

getK2

public int getK2()
Description copied from interface: BandedMatrix
DOCUMENT ME!

Specified by:
getK2 in interface BandedMatrix
Returns:
DOCUMENT ME!

toString

public java.lang.String toString()
Returns a string representing this matrix.

Overrides:
toString in class AbstractIntegerMatrix

toDoubleMatrix

public AbstractDoubleMatrix toDoubleMatrix()
Converts this matrix to a double matrix.

Overrides:
toDoubleMatrix in class AbstractIntegerSquareMatrix
Returns:
a double matrix

toComplexMatrix

public AbstractComplexMatrix toComplexMatrix()
Converts this matrix to a complex matrix.

Overrides:
toComplexMatrix in class AbstractIntegerSquareMatrix
Returns:
a complex matrix

getPrimitiveElement

public int getPrimitiveElement(int i,
                               int j)
Returns an element of the matrix.

Specified by:
getPrimitiveElement in class AbstractIntegerMatrix
Parameters:
i - row index of the element
j - column index of the element
Throws:
IllegalDimensionException - If attempting to access an invalid element.

setElement

public void setElement(int i,
                       int j,
                       int x)
Sets the value of an element of the matrix. Should only be used to initialise this matrix.

Specified by:
setElement in class AbstractIntegerMatrix
Parameters:
i - row index of the element
j - column index of the element
x - a number
Throws:
IllegalDimensionException - If attempting to access an invalid element.

setAllElements

public void setAllElements(int r)
Sets the value of all elements of the matrix. This method will throw an error unless the paramter is 0. This is because you need a SquareMatrix to set all the contents of the matrix to a value. You should think about using a IntegerSquareMatrix.

Overrides:
setAllElements in class AbstractIntegerMatrix
Parameters:
r - a Complex element

isSymmetric

public boolean isSymmetric()
Returns true if this matrix is symmetric.

Specified by:
isSymmetric in interface SquareMatrix
Overrides:
isSymmetric in class AbstractIntegerSquareMatrix
Returns:
DOCUMENT ME!

det

public int det()
Returns the determinant.

Overrides:
det in class AbstractIntegerSquareMatrix

trace

public int trace()
Returns the trace.

Overrides:
trace in class AbstractIntegerSquareMatrix

infNorm

public int infNorm()
Returns the linfinity-norm.

Overrides:
infNorm in class AbstractIntegerMatrix

frobeniusNorm

public double frobeniusNorm()
Returns the Frobenius (l2) norm.

Overrides:
frobeniusNorm in class AbstractIntegerMatrix

operatorNorm

public double operatorNorm()
                    throws MaximumIterationsExceededException
Returns the operator norm.

Throws:
MaximumIterationsExceededException - If it takes more than 50 iterations to determine an eigenvalue.

add

public AbstractIntegerSquareMatrix add(AbstractIntegerSquareMatrix m)
Returns the addition of this matrix and another.

Overrides:
add in class AbstractIntegerSquareMatrix
Parameters:
m - a int matrix
Throws:
IllegalDimensionException - If the matrices are different sizes.

add

public IntegerSquareMatrix add(IntegerSquareMatrix m)

add

public IntegerTridiagonalMatrix add(IntegerTridiagonalMatrix m)
Returns the addition of this matrix and another.

Parameters:
m - a int tridiagonal matrix
Throws:
IllegalDimensionException - If the matrices are different sizes.

add

public IntegerDiagonalMatrix add(IntegerDiagonalMatrix m)
Returns the addition of this matrix and another.

Parameters:
m - a int diagonal matrix
Throws:
IllegalDimensionException - If the matrices are different sizes.

subtract

public AbstractIntegerSquareMatrix subtract(AbstractIntegerSquareMatrix m)
Returns the subtraction of this matrix by another.

Overrides:
subtract in class AbstractIntegerSquareMatrix
Parameters:
m - a int matrix
Throws:
IllegalDimensionException - If the matrices are different sizes.

subtract

public IntegerSquareMatrix subtract(IntegerSquareMatrix m)

subtract

public IntegerTridiagonalMatrix subtract(IntegerTridiagonalMatrix m)
Returns the subtraction of this matrix and another.

Parameters:
m - a int tridiagonal matrix
Throws:
IllegalDimensionException - If the matrices are different sizes.

subtract

public IntegerDiagonalMatrix subtract(IntegerDiagonalMatrix m)
Returns the subtraction of this matrix and another.

Parameters:
m - a int diagonal matrix
Throws:
IllegalDimensionException - If the matrices are different sizes.

scalarMultiply

public AbstractIntegerMatrix scalarMultiply(int x)
Returns the multiplication of this matrix by a scalar.

Overrides:
scalarMultiply in class AbstractIntegerSquareMatrix
Parameters:
x - a int.
Returns:
a int diagonal matrix.

scalarProduct

public int scalarProduct(AbstractIntegerSquareMatrix m)
Returns the scalar product of this matrix and another.

Overrides:
scalarProduct in class AbstractIntegerSquareMatrix
Parameters:
m - a int matrix.
Throws:
IllegalDimensionException - If the matrices are different sizes.

scalarProduct

public int scalarProduct(IntegerSquareMatrix m)

scalarProduct

public int scalarProduct(IntegerTridiagonalMatrix m)

scalarProduct

public int scalarProduct(IntegerDiagonalMatrix m)

multiply

public AbstractIntegerVector multiply(AbstractIntegerVector v)
Returns the multiplication of a vector by this matrix.

Overrides:
multiply in class AbstractIntegerMatrix
Parameters:
v - a int vector.
Throws:
IllegalDimensionException - If the matrix and vector are incompatible.

multiply

public AbstractIntegerSquareMatrix multiply(AbstractIntegerSquareMatrix m)
Returns the multiplication of this matrix and another.

Overrides:
multiply in class AbstractIntegerSquareMatrix
Parameters:
m - a int matrix
Returns:
a AbstractIntegerMatrix or a AbstractIntegerSquareMatrix as appropriate
Throws:
IllegalDimensionException - If the matrices are incompatible.

multiply

public IntegerSquareMatrix multiply(IntegerSquareMatrix m)

multiply

public IntegerTridiagonalMatrix multiply(IntegerTridiagonalMatrix m)

multiply

public IntegerDiagonalMatrix multiply(IntegerDiagonalMatrix m)

transpose

public Matrix transpose()
Returns the transpose of this matrix.

Specified by:
transpose in interface Matrix
Overrides:
transpose in class AbstractIntegerSquareMatrix
Returns:
a int matrix

inverse

public AbstractDoubleSquareMatrix inverse()
Returns the inverse of this matrix.

Overrides:
inverse in class AbstractIntegerSquareMatrix
Returns:
a double diagonal matrix

luDecompose

public AbstractDoubleSquareMatrix[] luDecompose(int[] pivot)
Returns the LU decomposition of this matrix.

Overrides:
luDecompose in class AbstractIntegerSquareMatrix
Parameters:
pivot - an empty array of length numRows()+1 to hold the pivot information (null if not interested). The last array element will contain the parity.
Returns:
an array with [0] containing the L-matrix and [1] containing the U-matrix.

choleskyDecompose

public AbstractDoubleSquareMatrix[] choleskyDecompose()
Returns the Cholesky decomposition of this matrix. Matrix must be symmetric and positive definite.

Overrides:
choleskyDecompose in class AbstractIntegerSquareMatrix
Returns:
an array with [0] containing the L-matrix and [1] containing the U-matrix.

qrDecompose

public AbstractDoubleSquareMatrix[] qrDecompose()
Returns the QR decomposition of this matrix.

Overrides:
qrDecompose in class AbstractIntegerSquareMatrix
Returns:
an array with [0] containing the Q-matrix and [1] containing the R-matrix.

singularValueDecompose

public AbstractDoubleSquareMatrix[] singularValueDecompose()
Returns the singular value decomposition of this matrix.

Overrides:
singularValueDecompose in class AbstractIntegerSquareMatrix
Returns:
an array with [0] containing the U-matrix, [1] containing the S-matrix and [2] containing the V-matrix.

mapElements

public AbstractDoubleMatrix mapElements(PrimitiveMapping f)
Applies a function on all the matrix elements.

Overrides:
mapElements in class AbstractIntegerMatrix
Parameters:
f - a user-defined function
Returns:
a double matrix

clone

public java.lang.Object clone()
Clone matrix into a new matrix.

Overrides:
clone in class java.lang.Object
Returns:
the cloned matrix.

toPrimitiveArray

public int[][] toPrimitiveArray()
Projects the matrix to an array.

Overrides:
toPrimitiveArray in class AbstractIntegerMatrix
Returns:
an int array.