JSci.maths
Class DoubleTridiagonalMatrix

java.lang.Object
  extended by JSci.maths.Matrix
      extended by JSci.maths.DoubleMatrix
          extended by JSci.maths.DoubleSquareMatrix
              extended by JSci.maths.DoubleTridiagonalMatrix
All Implemented Interfaces:
java.io.Serializable, Algebra.Member, Module.Member, VectorSpace.Member, Ring.Member, AbelianGroup.Member, Member
Direct Known Subclasses:
DoubleDiagonalMatrix

public class DoubleTridiagonalMatrix
extends DoubleSquareMatrix

The DoubleTridiagonalMatrix class provides an object for encapsulating tridiagonal matrices containing doubles. Uses compressed diagonal storage.

Version:
2.2
Author:
Mark Hale
See Also:
Serialized Form

Field Summary
protected  double[] diag
           
protected  double[] ldiag
          Tridiagonal data.
protected static int TRIDIAGONAL
          Storage format identifier.
protected  double[] udiag
           
 
Fields inherited from class JSci.maths.DoubleSquareMatrix
LU, LUpivot
 
Fields inherited from class JSci.maths.DoubleMatrix
ARRAY_2D, matrix
 
Fields inherited from class JSci.maths.Matrix
CLASS_SPECIFIC, numCols, numRows, storageFormat
 
Constructor Summary
  DoubleTridiagonalMatrix(double[][] array)
          Constructs a matrix from an array.
  DoubleTridiagonalMatrix(int size)
          Constructs an empty matrix.
protected DoubleTridiagonalMatrix(int size, int storeID)
          Constructs a matrix.
 
Method Summary
 DoubleMatrix add(DoubleMatrix m)
          Returns the addition of this matrix and another.
 DoubleSquareMatrix add(DoubleSquareMatrix m)
          Returns the addition of this matrix and another.
 DoubleTridiagonalMatrix add(DoubleTridiagonalMatrix m)
          Returns the addition of this matrix and another.
 DoubleSquareMatrix[] choleskyDecompose()
          Returns the Cholesky decomposition of this matrix.
 boolean equals(java.lang.Object m)
          Compares two double tridiagonal matrices for equality.
 double frobeniusNorm()
          Returns the Frobenius (l2) norm.
 double getElement(int i, int j)
          Returns an element of the matrix.
 double infNorm()
          Returns the linfinity-norm.
 boolean isSymmetric()
          Returns true if this matrix is symmetric.
 DoubleSquareMatrix[] luDecompose(int[] pivot)
          Returns the LU decomposition of this matrix.
 DoubleMatrix mapElements(Mapping f)
          Applies a function on all the matrix elements.
 DoubleMatrix multiply(DoubleMatrix m)
          Returns the multiplication of this matrix and another.
 DoubleSquareMatrix multiply(DoubleSquareMatrix m)
          Returns the multiplication of this matrix and another.
 DoubleSquareMatrix multiply(DoubleTridiagonalMatrix m)
          Returns the multiplication of this matrix and another.
 DoubleVector multiply(DoubleVector v)
          Returns the multiplication of a vector by this matrix.
 double operatorNorm()
          Returns the operator norm.
 DoubleMatrix scalarMultiply(double x)
          Returns the multiplication of this matrix by a scalar.
 double scalarProduct(DoubleMatrix m)
          Returns the scalar product of this matrix and another.
 double scalarProduct(DoubleSquareMatrix m)
          Returns the scalar product of this matrix and another.
 double scalarProduct(DoubleTridiagonalMatrix m)
          Returns the scalar product of this matrix and another.
 void setElement(int i, int j, double x)
          Sets the value of an element of the matrix.
 DoubleSquareMatrix[] singularValueDecompose()
          Returns the singular value decomposition of this matrix.
 DoubleMatrix subtract(DoubleMatrix m)
          Returns the subtraction of this matrix and another.
 DoubleSquareMatrix subtract(DoubleSquareMatrix m)
          Returns the subtraction of this matrix by another.
 DoubleTridiagonalMatrix subtract(DoubleTridiagonalMatrix m)
          Returns the subtraction of this matrix and another.
 ComplexMatrix toComplexMatrix()
          Converts this matrix to a complex matrix.
 IntegerMatrix 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.DoubleSquareMatrix
det, inverse, isUnitary, polarDecompose
 
Methods inherited from class JSci.maths.DoubleMatrix
add, directSum, finalize, hashCode, multiply, negate, scalarDivide, scalarDivide, scalarMultiply, subtract, tensorProduct
 
Methods inherited from class JSci.maths.Matrix
columns, getInvalidElementMsg, rows
 
Methods inherited from class java.lang.Object
clone, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

TRIDIAGONAL

protected static final int TRIDIAGONAL
Storage format identifier.

See Also:
Constant Field Values

ldiag

protected double[] ldiag
Tridiagonal data.


diag

protected double[] diag

udiag

protected double[] udiag
Constructor Detail

DoubleTridiagonalMatrix

protected DoubleTridiagonalMatrix(int size,
                                  int storeID)
Constructs a matrix.


DoubleTridiagonalMatrix

public DoubleTridiagonalMatrix(int size)
Constructs an empty matrix.

Parameters:
size - the number of rows/columns

DoubleTridiagonalMatrix

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

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

equals

public boolean equals(java.lang.Object m)
Compares two double tridiagonal matrices for equality.

Overrides:
equals in class DoubleMatrix
Parameters:
m - a double tridiagonal matrix

toString

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

Overrides:
toString in class DoubleMatrix

toIntegerMatrix

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

Overrides:
toIntegerMatrix in class DoubleMatrix
Returns:
an integer tridiagonal matrix.

toComplexMatrix

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

Overrides:
toComplexMatrix in class DoubleMatrix
Returns:
a complex tridiagonal matrix.

getElement

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

Overrides:
getElement in class DoubleMatrix
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.

Overrides:
setElement in class DoubleMatrix
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 DoubleSquareMatrix

trace

public double trace()
Returns the trace.

Overrides:
trace in class DoubleSquareMatrix

infNorm

public double infNorm()
Returns the linfinity-norm.

Overrides:
infNorm in class DoubleMatrix

frobeniusNorm

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

Overrides:
frobeniusNorm in class DoubleMatrix

operatorNorm

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

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

add

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

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

add

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

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

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.

subtract

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

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

subtract

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

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

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.

scalarMultiply

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

Overrides:
scalarMultiply in class DoubleSquareMatrix
Parameters:
x - a double.
Returns:
a double tridiagonal matrix.

scalarProduct

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

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

scalarProduct

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

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

scalarProduct

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

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

multiply

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

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

multiply

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

Overrides:
multiply in class DoubleMatrix
Parameters:
m - a double matrix
Returns:
a DoubleMatrix or a DoubleSquareMatrix as appropriate
Throws:
MatrixDimensionException - If the matrices are different sizes.

multiply

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

Overrides:
multiply in class DoubleSquareMatrix
Parameters:
m - a double square matrix
Throws:
MatrixDimensionException - If the matrices are different sizes.

multiply

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

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

transpose

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

Overrides:
transpose in class DoubleSquareMatrix
Returns:
a double tridiagonal matrix

luDecompose

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

Overrides:
luDecompose in class DoubleSquareMatrix
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.

choleskyDecompose

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

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

singularValueDecompose

public DoubleSquareMatrix[] singularValueDecompose()
Returns the singular value decomposition of this matrix. Based on the code from JAMA (public domain).

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

mapElements

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

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