JSci.maths.matrices
Class DoubleDiagonalMatrix

java.lang.Object
  extended by JSci.maths.matrices.Matrix
      extended by JSci.maths.matrices.AbstractDoubleMatrix
          extended by JSci.maths.matrices.AbstractDoubleSquareMatrix
              extended by JSci.maths.matrices.DoubleDiagonalMatrix
All Implemented Interfaces:
java.io.Serializable, Algebra.Member, Module.Member, VectorSpace.Member, Ring.Member, AbelianGroup.Member, DiagonalMatrix, SquareMatrix, TridiagonalMatrix, Member

public class DoubleDiagonalMatrix
extends AbstractDoubleSquareMatrix
implements DiagonalMatrix

The DoubleDiagonalMatrix class provides an object for encapsulating double diagonal matrices.

See Also:
Serialized Form

Field Summary
protected  double[] diag
          Diagonal data.
 
Fields inherited from class JSci.maths.matrices.AbstractDoubleSquareMatrix
luCache
 
Fields inherited from class JSci.maths.matrices.Matrix
numCols, numRows
 
Constructor Summary
DoubleDiagonalMatrix(double[] array)
          Constructs a matrix by wrapping an array containing the diagonal elements.
DoubleDiagonalMatrix(double[][] array)
          Constructs a matrix from an array.
DoubleDiagonalMatrix(int size)
          Constructs an empty matrix.
 
Method Summary
 AbstractDoubleSquareMatrix add(AbstractDoubleSquareMatrix m)
          Returns the addition of this matrix and another.
 DoubleDiagonalMatrix add(DoubleDiagonalMatrix m)
          Returns the addition of this matrix and another.
 DoubleSquareMatrix add(DoubleSquareMatrix m)
           
 DoubleTridiagonalMatrix add(DoubleTridiagonalMatrix m)
          Returns the addition of this matrix and another.
 AbstractDoubleSquareMatrix[] choleskyDecompose()
          Returns the Cholesky decomposition of this matrix.
 double det()
          Returns the determinant.
 boolean equals(AbstractDoubleMatrix m, double tol)
          Compares two ${nativeTyp} matrices for equality.
 double frobeniusNorm()
          Returns the Frobenius (l2) norm.
 double getElement(int i, int j)
          Returns an element of the matrix.
static DoubleDiagonalMatrix identity(int size)
          Creates an identity matrix.
 double infNorm()
          Returns the linfinity-norm.
 AbstractDoubleSquareMatrix inverse()
          Returns the inverse of this matrix.
 boolean isSymmetric()
          Returns true if this matrix is symmetric.
 AbstractDoubleSquareMatrix[] luDecompose()
          Returns the LU decomposition of this matrix.
 AbstractDoubleSquareMatrix[] luDecompose(int[] pivot)
          Returns the LU decomposition of this matrix.
 AbstractDoubleMatrix mapElements(Mapping f)
          Applies a function on all the matrix elements.
 AbstractDoubleSquareMatrix multiply(AbstractDoubleSquareMatrix m)
          Returns the multiplication of this matrix and another.
 AbstractDoubleVector multiply(AbstractDoubleVector v)
          Returns the multiplication of a vector by this matrix.
 DoubleDiagonalMatrix multiply(DoubleDiagonalMatrix m)
           
 DoubleSquareMatrix multiply(DoubleSquareMatrix m)
           
 DoubleTridiagonalMatrix multiply(DoubleTridiagonalMatrix m)
           
 double operatorNorm()
          Returns the operator norm.
 AbstractDoubleSquareMatrix[] qrDecompose()
          Returns the QR decomposition of this matrix.
 AbstractDoubleMatrix scalarDivide(double x)
          Returns the division of this matrix by a scalar.
 AbstractDoubleMatrix scalarMultiply(double x)
          Returns the multiplication of this matrix by a scalar.
 double scalarProduct(AbstractDoubleSquareMatrix m)
          Returns the scalar product of this matrix and another.
 double scalarProduct(DoubleDiagonalMatrix m)
           
 double scalarProduct(DoubleSquareMatrix m)
           
 double scalarProduct(DoubleTridiagonalMatrix m)
           
 void setElement(int i, int j, double x)
          Sets the value of an element of the matrix.
 AbstractDoubleSquareMatrix[] singularValueDecompose()
          Returns the singular value decomposition of this matrix.
 AbstractDoubleSquareMatrix subtract(AbstractDoubleSquareMatrix m)
          Returns the subtraction of this matrix by another.
 DoubleDiagonalMatrix subtract(DoubleDiagonalMatrix m)
          Returns the subtraction of this matrix and another.
 DoubleSquareMatrix subtract(DoubleSquareMatrix m)
           
 DoubleTridiagonalMatrix subtract(DoubleTridiagonalMatrix m)
          Returns the subtraction of this matrix and another.
 AbstractComplexMatrix toComplexMatrix()
          Converts this matrix to a complex matrix.
 AbstractIntegerMatrix toIntegerMatrix()
          Converts this matrix to an integer matrix.
 java.lang.String toString()
          Returns a string representing this matrix.
 double trace()
          Returns the trace.
 Matrix transpose()
          Returns the transpose of this matrix.
 
Methods inherited from class JSci.maths.matrices.AbstractDoubleSquareMatrix
add, directSum, isUnitary, luDecompose_cache, negate, polarDecompose, scalarProduct, subtract, tensor
 
Methods inherited from class JSci.maths.matrices.AbstractDoubleMatrix
add, directSum, equals, equals, getSet, hashCode, multiply, multiply, scalarDivide, scalarMultiply, subtract, tensor
 
Methods inherited from class JSci.maths.matrices.Matrix
columns, getInvalidElementMsg, rows
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

diag

protected final double[] diag
Diagonal data.

Constructor Detail

DoubleDiagonalMatrix

public DoubleDiagonalMatrix(int size)
Constructs an empty matrix.

Parameters:
size - the number of rows/columns

DoubleDiagonalMatrix

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

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

DoubleDiagonalMatrix

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

Parameters:
array - an assigned value
Method Detail

identity

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

Parameters:
size - the number of rows/columns

equals

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

Overrides:
equals in class AbstractDoubleMatrix
Parameters:
m - a double matrix

toString

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

Overrides:
toString in class AbstractDoubleMatrix

toIntegerMatrix

public AbstractIntegerMatrix toIntegerMatrix()
Converts this matrix to an integer matrix.

Overrides:
toIntegerMatrix in class AbstractDoubleSquareMatrix
Returns:
an integer matrix

toComplexMatrix

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

Overrides:
toComplexMatrix in class AbstractDoubleSquareMatrix
Returns:
a complex matrix

getElement

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

Specified by:
getElement in class AbstractDoubleMatrix
Parameters:
i - row index of the element
j - column index of the element
Throws:
MatrixDimensionException - If attempting to access an invalid element.

setElement

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

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

isSymmetric

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

Overrides:
isSymmetric in class AbstractDoubleSquareMatrix

det

public double det()
Returns the determinant.

Overrides:
det in class AbstractDoubleSquareMatrix

trace

public double trace()
Returns the trace.

Overrides:
trace in class AbstractDoubleSquareMatrix

infNorm

public double infNorm()
Returns the linfinity-norm.

Overrides:
infNorm in class AbstractDoubleMatrix

frobeniusNorm

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

Overrides:
frobeniusNorm in class AbstractDoubleMatrix

operatorNorm

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

Overrides:
operatorNorm in class AbstractDoubleSquareMatrix
Throws:
MaximumIterationsExceededException - If it takes more than 50 iterations to determine an eigenvalue.

add

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

Overrides:
add in class AbstractDoubleSquareMatrix
Parameters:
m - a double matrix
Throws:
MatrixDimensionException - If the matrices are different sizes.

add

public DoubleSquareMatrix add(DoubleSquareMatrix m)

add

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

Parameters:
m - a double tridiagonal matrix
Throws:
MatrixDimensionException - If the matrices are different sizes.

add

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

Parameters:
m - a double diagonal matrix
Throws:
MatrixDimensionException - If the matrices are different sizes.

subtract

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

Overrides:
subtract in class AbstractDoubleSquareMatrix
Parameters:
m - a double matrix
Throws:
MatrixDimensionException - If the matrices are different sizes.

subtract

public DoubleSquareMatrix subtract(DoubleSquareMatrix m)

subtract

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

Parameters:
m - a double tridiagonal matrix
Throws:
MatrixDimensionException - If the matrices are different sizes.

subtract

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

Parameters:
m - a double diagonal matrix
Throws:
MatrixDimensionException - If the matrices are different sizes.

scalarMultiply

public AbstractDoubleMatrix scalarMultiply(double x)
Returns the multiplication of this matrix by a scalar.

Overrides:
scalarMultiply in class AbstractDoubleSquareMatrix
Parameters:
x - a double.
Returns:
a double diagonal matrix.

scalarDivide

public AbstractDoubleMatrix scalarDivide(double x)
Returns the division of this matrix by a scalar.

Overrides:
scalarDivide in class AbstractDoubleSquareMatrix
Parameters:
x - a double.
Returns:
a double diagonal matrix.

scalarProduct

public double scalarProduct(AbstractDoubleSquareMatrix m)
Returns the scalar product of this matrix and another.

Overrides:
scalarProduct in class AbstractDoubleSquareMatrix
Parameters:
m - a double matrix.
Throws:
MatrixDimensionException - If the matrices are different sizes.

scalarProduct

public double scalarProduct(DoubleSquareMatrix m)

scalarProduct

public double scalarProduct(DoubleTridiagonalMatrix m)

scalarProduct

public double scalarProduct(DoubleDiagonalMatrix m)

multiply

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

Overrides:
multiply in class AbstractDoubleMatrix
Parameters:
v - a double vector.
Throws:
DimensionException - If the matrix and vector are incompatible.

multiply

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

Overrides:
multiply in class AbstractDoubleSquareMatrix
Parameters:
m - a double matrix
Returns:
a AbstractDoubleMatrix or a AbstractDoubleSquareMatrix as appropriate
Throws:
MatrixDimensionException - If the matrices are incompatible.

multiply

public DoubleSquareMatrix multiply(DoubleSquareMatrix m)

multiply

public DoubleTridiagonalMatrix multiply(DoubleTridiagonalMatrix m)

multiply

public DoubleDiagonalMatrix multiply(DoubleDiagonalMatrix m)

transpose

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

Overrides:
transpose in class AbstractDoubleSquareMatrix
Returns:
a double matrix

inverse

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

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

luDecompose

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

Overrides:
luDecompose in class AbstractDoubleSquareMatrix
Parameters:
pivot - an empty array of length rows()+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.

luDecompose

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

Overrides:
luDecompose in class AbstractDoubleSquareMatrix
Returns:
an array with [0] containing the L-matrix and [1] containing the U-matrix.
PlanetMath references:
LUDecomposition

choleskyDecompose

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

Overrides:
choleskyDecompose in class AbstractDoubleSquareMatrix
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 AbstractDoubleSquareMatrix
Returns:
an array with [0] containing the Q-matrix and [1] containing the R-matrix.
PlanetMath references:
QRDecomposition

singularValueDecompose

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

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

mapElements

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

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