drasys.or.matrix
Class SparseMatrix

java.lang.Object
  |
  +--drasys.or.matrix.RealContainer
        |
        +--drasys.or.matrix.Matrix
              |
              +--drasys.or.matrix.SparseMatrix

public class SparseMatrix
extends Matrix
implements SizableMatrixI

A sparse dynamic matrix of double values.

References:

Matrix Computations (Johns Hopkins Studies in the Mathematical Sciences)
    Gene H. Golub, Charles F. Van Loan (Contributor) / Paperback / Published 1996
Numerical Recipes in C : The Art of Scientific Computing
    William H. Press, et al / Hardcover / Published 1993
Parallel Algorithms for Matrix Computations
    K.A. Gallivan / Paperback / Published 1990

See Also:
MatrixI, Serialized Form

Fields inherited from class drasys.or.matrix.RealContainer
_epsilon, _globalEpsilon
 
Constructor Summary
SparseMatrix(double[][] array)
          Creates a sparse matrix from the contents of 'array'.
SparseMatrix(double[][] array, double epsilon)
          Creates a sparse matrix from the contents of 'array'.
SparseMatrix(int sizeOfRows, int sizeOfColumns)
          Constructs a sparse matrix with an explicit size.
SparseMatrix(MatrixI matrix)
          Creates a sparse matrix from the contents of 'matrix'.
SparseMatrix(MatrixI matrix, double epsilon)
          Creates a sparse matrix from the non-null elements of 'matrix'.
SparseMatrix(VectorI vector)
          Constructs a square matrix with 'vector' as the diagonal.
SparseMatrix(VectorI vector, double epsilon)
          Creates a square sparse matrix with the non-null elements of 'vector' as the diagonal.
 
Method Summary
 void addColumn(VectorI vector)
          Adds a new column and any non-null elements in vector to the end of the matrix .
 void addRow(VectorI vector)
          Adds a new row and any non-null elements in vector to the end of the matrix .
 int capacityOfColumns()
          Always returns Integer.MAX_VALUE.
 int capacityOfRows()
          Always returns Integer.MAX_VALUE.
 java.util.Enumeration columnElements(int column)
          Returns an enumeration of the non-null elements in a column.
 double elementAt(int row, int column)
          Gets an element's value from the matrix.
 java.util.Enumeration elements()
          Returns an enumeration of the non-null elements in the matrix.
 double[][] getArray()
          Returns a new two-dimensional array containing the values in matrix.
 boolean isColumnMajor()
          Returns true if the matrix is column-major.
 boolean isNull(int row, int column)
          Returns true if an element has no value associated with it.
 boolean isRowMajor()
          Returns true if the matrix is row-major.
 java.util.Enumeration rowElements(int row)
          Returns an enumeration of the non-null elements in a row.
 void setCapacity(int capacityOfRows, int capacityOfColumns)
          Allocates memory so the matrix can hold this many rows and columns without reallocating memory.
 void setElementAt(int row, int column, double value)
          Sets an element's value in the matrix.
 void setElements(double value)
          Sets the value of all the non-null elements.
 void setSize(int sizeOfRows, int sizeOfColumns)
          Sets the number of rows and columns in the matrix.
 int sizeOfColumns()
          Returns the number of columns in the matrix.
 int sizeOfElements()
          Returns the number of non-null elements in the matrix.
 int sizeOfRows()
          Returns the number of rows in the matrix.
 double sum(int rowBegin, int rowEnd, int columnBegin, int columnEnd)
          Returns the sum of all of the elements in the sub-matrix.
Computes sum(a[i][j]).
Where: i = {rowBegin,...,(rowEnd-1)}
j = {columBegin,...,(columnEnd-1)}
 double sumOfSquaredDifferences(int rowBegin, int rowEnd, int columnBegin, int columnEnd, double scaler)
          Returns the sum of the squared differences between the elements and a scaler.
Computes sum((a[i][j]-scaler)^2).
Where: i = {rowBegin,...,(rowEnd-1)}
j = {columBegin,...,(columnEnd-1)}
 double sumOfSquares(int rowBegin, int rowEnd, int columnBegin, int columnEnd)
          Returns the sum of the squares of all of the elements in the sub-matrix.
Computes sum(a[i][j]^2).
Where: i = {rowBegin,...,(rowEnd-1)}
j = {columBegin,...,(columnEnd-1)}
 
Methods inherited from class drasys.or.matrix.Matrix
equals, equals, setColumn, setDiagonal, setElements, setRow, sum, sum, sumOfSquaredDifferences, sumOfSquaredDifferences, sumOfSquares, sumOfSquares, toString
 
Methods inherited from class drasys.or.matrix.RealContainer
equals, getEpsilon, getGlobalEpsilon, setEpsilon, setGlobalEpsilon
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SparseMatrix

public SparseMatrix(int sizeOfRows,
                    int sizeOfColumns)
Constructs a sparse matrix with an explicit size.

SparseMatrix

public SparseMatrix(VectorI vector)
Constructs a square matrix with 'vector' as the diagonal. All non-null elements in 'vector' will be added.

SparseMatrix

public SparseMatrix(VectorI vector,
                    double epsilon)
Creates a square sparse matrix with the non-null elements of 'vector' as the diagonal. Elements which equal 0.0 to within 'epsilon' will not be added. The matrix epsilon will be set to 'epsilon'.

SparseMatrix

public SparseMatrix(MatrixI matrix)
Creates a sparse matrix from the contents of 'matrix'. All non-null elements in 'matrix' will be added.

SparseMatrix

public SparseMatrix(MatrixI matrix,
                    double epsilon)
Creates a sparse matrix from the non-null elements of 'matrix'. Elements which equal 0.0 to within 'epsilon' will not be added. The matrix epsilon will be set to 'epsilon'.

SparseMatrix

public SparseMatrix(double[][] array)
Creates a sparse matrix from the contents of 'array'. All of the elements will be added.

SparseMatrix

public SparseMatrix(double[][] array,
                    double epsilon)
Creates a sparse matrix from the contents of 'array'. Elements in 'array' which equal 0.0 to within 'epsilon' will not be added. The matrix epsilon will be set to 'epsilon'.
Method Detail

setElements

public void setElements(double value)
Sets the value of all the non-null elements.

isRowMajor

public boolean isRowMajor()
Returns true if the matrix is row-major.

isColumnMajor

public boolean isColumnMajor()
Returns true if the matrix is column-major.

sizeOfRows

public int sizeOfRows()
Returns the number of rows in the matrix.

sizeOfColumns

public int sizeOfColumns()
Returns the number of columns in the matrix.

capacityOfRows

public int capacityOfRows()
Always returns Integer.MAX_VALUE.
Specified by:
capacityOfRows in interface SizableMatrixI

capacityOfColumns

public int capacityOfColumns()
Always returns Integer.MAX_VALUE.
Specified by:
capacityOfColumns in interface SizableMatrixI

addRow

public void addRow(VectorI vector)
Adds a new row and any non-null elements in vector to the end of the matrix . If 'vector' is null then no new elements will be modified in the new row.
Specified by:
addRow in interface SizableMatrixI

addColumn

public void addColumn(VectorI vector)
Adds a new column and any non-null elements in vector to the end of the matrix . If 'vector' is null then no new elements will be changed in the new column.
Specified by:
addColumn in interface SizableMatrixI

setSize

public void setSize(int sizeOfRows,
                    int sizeOfColumns)
Sets the number of rows and columns in the matrix.
Specified by:
setSize in interface SizableMatrixI

setCapacity

public void setCapacity(int capacityOfRows,
                        int capacityOfColumns)
Allocates memory so the matrix can hold this many rows and columns without reallocating memory.
Specified by:
setCapacity in interface SizableMatrixI

sizeOfElements

public int sizeOfElements()
Returns the number of non-null elements in the matrix.

setElementAt

public void setElementAt(int row,
                         int column,
                         double value)
Sets an element's value in the matrix.

isNull

public boolean isNull(int row,
                      int column)
Returns true if an element has no value associated with it. Elements which have no value assigned return 0.0 when accessed.

elementAt

public double elementAt(int row,
                        int column)
Gets an element's value from the matrix.
Tags copied from interface: MatrixI
Returns:
zero is the element is null

getArray

public double[][] getArray()
Returns a new two-dimensional array containing the values in matrix. The rows of the array hold the rows of the matrix.
Overrides:
getArray in class Matrix

rowElements

public java.util.Enumeration rowElements(int row)
Returns an enumeration of the non-null elements in a row. The elements are enumerated in random order.
Overrides:
rowElements in class Matrix
Returns:
an enumeration whose elements are of type MatrixElementI

columnElements

public java.util.Enumeration columnElements(int column)
Returns an enumeration of the non-null elements in a column. The elements are enumerated in random order.
Overrides:
columnElements in class Matrix
Returns:
an enumeration whose elements are of type MatrixElementI

elements

public java.util.Enumeration elements()
Returns an enumeration of the non-null elements in the matrix. The elements are enumerated in random order.
Overrides:
elements in class Matrix
Returns:
an enumeration whose elements are of type MatrixElementI

sum

public double sum(int rowBegin,
                  int rowEnd,
                  int columnBegin,
                  int columnEnd)
Returns the sum of all of the elements in the sub-matrix.
Computes sum(a[i][j]).
Where: i = {rowBegin,...,(rowEnd-1)}
j = {columBegin,...,(columnEnd-1)}
Overrides:
sum in class Matrix

sumOfSquares

public double sumOfSquares(int rowBegin,
                           int rowEnd,
                           int columnBegin,
                           int columnEnd)
Returns the sum of the squares of all of the elements in the sub-matrix.
Computes sum(a[i][j]^2).
Where: i = {rowBegin,...,(rowEnd-1)}
j = {columBegin,...,(columnEnd-1)}
Overrides:
sumOfSquares in class Matrix

sumOfSquaredDifferences

public double sumOfSquaredDifferences(int rowBegin,
                                      int rowEnd,
                                      int columnBegin,
                                      int columnEnd,
                                      double scaler)
Returns the sum of the squared differences between the elements and a scaler.
Computes sum((a[i][j]-scaler)^2).
Where: i = {rowBegin,...,(rowEnd-1)}
j = {columBegin,...,(columnEnd-1)}
Overrides:
sumOfSquaredDifferences in class Matrix


Copyright(C)1997-2000 by DRA Systems all rights reserved. OpsResearch.com