org.apache.commons.math.linear
Class AbstractRealMatrix

java.lang.Object
  extended by org.apache.commons.math.linear.AbstractRealMatrix
All Implemented Interfaces:
AnyMatrix, RealMatrix
Direct Known Subclasses:
Array2DRowRealMatrix, BlockRealMatrix, OpenMapRealMatrix, RealMatrixImpl

public abstract class AbstractRealMatrix
extends Object
implements RealMatrix

Basic implementation of RealMatrix methods regardless of the underlying storage.

All the methods implemented here use getEntry(int, int) to access matrix elements. Derived class can provide faster implementations.

Since:
2.0
Version:
$Revision: 1073158 $ $Date: 2011-02-21 22:46:52 +0100 (lun. 21 févr. 2011) $

Constructor Summary
protected AbstractRealMatrix()
          Creates a matrix with no data
protected AbstractRealMatrix(int rowDimension, int columnDimension)
          Create a new RealMatrix with the supplied row and column dimensions.
 
Method Summary
 RealMatrix add(RealMatrix m)
          Compute the sum of this and m.
abstract  void addToEntry(int row, int column, double increment)
          Change an entry in the specified row and column.
abstract  RealMatrix copy()
          Returns a (deep) copy of this.
 void copySubMatrix(int[] selectedRows, int[] selectedColumns, double[][] destination)
          Copy a submatrix.
 void copySubMatrix(int startRow, int endRow, int startColumn, int endColumn, double[][] destination)
          Copy a submatrix.
abstract  RealMatrix createMatrix(int rowDimension, int columnDimension)
          Create a new RealMatrix of the same type as the instance with the supplied row and column dimensions.
 boolean equals(Object object)
          Returns true iff object is a RealMatrix instance with the same dimensions as this and all corresponding matrix entries are equal.
 double[] getColumn(int column)
          Returns the entries in column number col as an array.
abstract  int getColumnDimension()
          Returns the number of columns in the matrix.
 RealMatrix getColumnMatrix(int column)
          Returns the entries in column number column as a column matrix.
 RealVector getColumnVector(int column)
          Returns the entries in column number column as a vector.
 double[][] getData()
          Returns matrix entries as a two-dimensional array.
 double getDeterminant()
          Deprecated. 
abstract  double getEntry(int row, int column)
          Returns the entry in the specified row and column.
 double getFrobeniusNorm()
          Returns the Frobenius norm of the matrix.
 double getNorm()
          Returns the maximum absolute row sum norm of the matrix.
 double[] getRow(int row)
          Returns the entries in row number row as an array.
abstract  int getRowDimension()
          Returns the number of rows in the matrix.
 RealMatrix getRowMatrix(int row)
          Returns the entries in row number row as a row matrix.
 RealVector getRowVector(int row)
          Returns the entries in row number row as a vector.
 RealMatrix getSubMatrix(int[] selectedRows, int[] selectedColumns)
          Gets a submatrix.
 RealMatrix getSubMatrix(int startRow, int endRow, int startColumn, int endColumn)
          Gets a submatrix.
 double getTrace()
          Returns the trace of the matrix (the sum of the elements on the main diagonal).
 int hashCode()
          Computes a hashcode for the matrix.
 RealMatrix inverse()
          Deprecated. 
 boolean isSingular()
          Deprecated. 
 boolean isSquare()
          Is this a square matrix?
 void luDecompose()
          Deprecated. as of release 2.0, replaced by LUDecomposition
 RealMatrix multiply(RealMatrix m)
          Returns the result of postmultiplying this by m.
abstract  void multiplyEntry(int row, int column, double factor)
          Change an entry in the specified row and column.
 double[] operate(double[] v)
          Returns the result of multiplying this by the vector v.
 RealVector operate(RealVector v)
          Returns the result of multiplying this by the vector v.
 double[] preMultiply(double[] v)
          Returns the (row) vector result of premultiplying this by the vector v.
 RealMatrix preMultiply(RealMatrix m)
          Returns the result premultiplying this by m.
 RealVector preMultiply(RealVector v)
          Returns the (row) vector result of premultiplying this by the vector v.
 RealMatrix scalarAdd(double d)
          Returns the result of adding d to each entry of this.
 RealMatrix scalarMultiply(double d)
          Returns the result multiplying each entry of this by d.
 void setColumn(int column, double[] array)
          Sets the entries in column number column as a column matrix.
 void setColumnMatrix(int column, RealMatrix matrix)
          Sets the entries in column number column as a column matrix.
 void setColumnVector(int column, RealVector vector)
          Sets the entries in column number column as a vector.
abstract  void setEntry(int row, int column, double value)
          Set the entry in the specified row and column.
 void setRow(int row, double[] array)
          Sets the entries in row number row as a row matrix.
 void setRowMatrix(int row, RealMatrix matrix)
          Sets the entries in row number row as a row matrix.
 void setRowVector(int row, RealVector vector)
          Sets the entries in row number row as a vector.
 void setSubMatrix(double[][] subMatrix, int row, int column)
          Replace the submatrix starting at row, column using data in the input subMatrix array.
 double[] solve(double[] b)
          Deprecated. 
 RealMatrix solve(RealMatrix b)
          Deprecated. 
 RealMatrix subtract(RealMatrix m)
          Compute this minus m.
 String toString()
          Get a string representation for this matrix.
 RealMatrix transpose()
          Returns the transpose of this matrix.
 double walkInColumnOrder(RealMatrixChangingVisitor visitor)
          Visit (and possibly change) all matrix entries in column order.
 double walkInColumnOrder(RealMatrixChangingVisitor visitor, int startRow, int endRow, int startColumn, int endColumn)
          Visit (and possibly change) some matrix entries in column order.
 double walkInColumnOrder(RealMatrixPreservingVisitor visitor)
          Visit (but don't change) all matrix entries in column order.
 double walkInColumnOrder(RealMatrixPreservingVisitor visitor, int startRow, int endRow, int startColumn, int endColumn)
          Visit (but don't change) some matrix entries in column order.
 double walkInOptimizedOrder(RealMatrixChangingVisitor visitor)
          Visit (and possibly change) all matrix entries using the fastest possible order.
 double walkInOptimizedOrder(RealMatrixChangingVisitor visitor, int startRow, int endRow, int startColumn, int endColumn)
          Visit (and possibly change) some matrix entries using the fastest possible order.
 double walkInOptimizedOrder(RealMatrixPreservingVisitor visitor)
          Visit (but don't change) all matrix entries using the fastest possible order.
 double walkInOptimizedOrder(RealMatrixPreservingVisitor visitor, int startRow, int endRow, int startColumn, int endColumn)
          Visit (but don't change) some matrix entries using the fastest possible order.
 double walkInRowOrder(RealMatrixChangingVisitor visitor)
          Visit (and possibly change) all matrix entries in row order.
 double walkInRowOrder(RealMatrixChangingVisitor visitor, int startRow, int endRow, int startColumn, int endColumn)
          Visit (and possibly change) some matrix entries in row order.
 double walkInRowOrder(RealMatrixPreservingVisitor visitor)
          Visit (but don't change) all matrix entries in row order.
 double walkInRowOrder(RealMatrixPreservingVisitor visitor, int startRow, int endRow, int startColumn, int endColumn)
          Visit (but don't change) some matrix entries in row order.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractRealMatrix

protected AbstractRealMatrix()
Creates a matrix with no data


AbstractRealMatrix

protected AbstractRealMatrix(int rowDimension,
                             int columnDimension)
                      throws IllegalArgumentException
Create a new RealMatrix with the supplied row and column dimensions.

Parameters:
rowDimension - the number of rows in the new matrix
columnDimension - the number of columns in the new matrix
Throws:
IllegalArgumentException - if row or column dimension is not positive
Method Detail

createMatrix

public abstract RealMatrix createMatrix(int rowDimension,
                                        int columnDimension)
                                 throws IllegalArgumentException
Create a new RealMatrix of the same type as the instance with the supplied row and column dimensions.

Specified by:
createMatrix in interface RealMatrix
Parameters:
rowDimension - the number of rows in the new matrix
columnDimension - the number of columns in the new matrix
Returns:
a new matrix of the same type as the instance
Throws:
IllegalArgumentException - if row or column dimension is not positive

copy

public abstract RealMatrix copy()
Returns a (deep) copy of this.

Specified by:
copy in interface RealMatrix
Returns:
matrix copy

add

public RealMatrix add(RealMatrix m)
               throws IllegalArgumentException
Compute the sum of this and m.

Specified by:
add in interface RealMatrix
Parameters:
m - matrix to be added
Returns:
this + m
Throws:
IllegalArgumentException - if m is not the same size as this

subtract

public RealMatrix subtract(RealMatrix m)
                    throws IllegalArgumentException
Compute this minus m.

Specified by:
subtract in interface RealMatrix
Parameters:
m - matrix to be subtracted
Returns:
this - m
Throws:
IllegalArgumentException - if m is not the same size as this

scalarAdd

public RealMatrix scalarAdd(double d)
Returns the result of adding d to each entry of this.

Specified by:
scalarAdd in interface RealMatrix
Parameters:
d - value to be added to each entry
Returns:
d + this

scalarMultiply

public RealMatrix scalarMultiply(double d)
Returns the result multiplying each entry of this by d.

Specified by:
scalarMultiply in interface RealMatrix
Parameters:
d - value to multiply all entries by
Returns:
d * this

multiply

public RealMatrix multiply(RealMatrix m)
                    throws IllegalArgumentException
Returns the result of postmultiplying this by m.

Specified by:
multiply in interface RealMatrix
Parameters:
m - matrix to postmultiply by
Returns:
this * m
Throws:
IllegalArgumentException - if columnDimension(this) != rowDimension(m)

preMultiply

public RealMatrix preMultiply(RealMatrix m)
                       throws IllegalArgumentException
Returns the result premultiplying this by m.

Specified by:
preMultiply in interface RealMatrix
Parameters:
m - matrix to premultiply by
Returns:
m * this
Throws:
IllegalArgumentException - if rowDimension(this) != columnDimension(m)

getData

public double[][] getData()
Returns matrix entries as a two-dimensional array.

Specified by:
getData in interface RealMatrix
Returns:
2-dimensional array of entries

getNorm

public double getNorm()
Returns the maximum absolute row sum norm of the matrix.

Specified by:
getNorm in interface RealMatrix
Returns:
norm

getFrobeniusNorm

public double getFrobeniusNorm()
Returns the Frobenius norm of the matrix.

Specified by:
getFrobeniusNorm in interface RealMatrix
Returns:
norm

getSubMatrix

public RealMatrix getSubMatrix(int startRow,
                               int endRow,
                               int startColumn,
                               int endColumn)
                        throws MatrixIndexException
Gets a submatrix. Rows and columns are indicated counting from 0 to n-1.

Specified by:
getSubMatrix in interface RealMatrix
Parameters:
startRow - Initial row index
endRow - Final row index (inclusive)
startColumn - Initial column index
endColumn - Final column index (inclusive)
Returns:
The subMatrix containing the data of the specified rows and columns
Throws:
MatrixIndexException - if the indices are not valid

getSubMatrix

public RealMatrix getSubMatrix(int[] selectedRows,
                               int[] selectedColumns)
                        throws MatrixIndexException
Gets a submatrix. Rows and columns are indicated counting from 0 to n-1.

Specified by:
getSubMatrix in interface RealMatrix
Parameters:
selectedRows - Array of row indices.
selectedColumns - Array of column indices.
Returns:
The subMatrix containing the data in the specified rows and columns
Throws:
MatrixIndexException - if row or column selections are not valid

copySubMatrix

public void copySubMatrix(int startRow,
                          int endRow,
                          int startColumn,
                          int endColumn,
                          double[][] destination)
                   throws MatrixIndexException,
                          IllegalArgumentException
Copy a submatrix. Rows and columns are indicated counting from 0 to n-1.

Specified by:
copySubMatrix in interface RealMatrix
Parameters:
startRow - Initial row index
endRow - Final row index (inclusive)
startColumn - Initial column index
endColumn - Final column index (inclusive)
destination - The arrays where the submatrix data should be copied (if larger than rows/columns counts, only the upper-left part will be used)
Throws:
MatrixIndexException - if the indices are not valid
IllegalArgumentException - if the destination array is too small

copySubMatrix

public void copySubMatrix(int[] selectedRows,
                          int[] selectedColumns,
                          double[][] destination)
                   throws MatrixIndexException,
                          IllegalArgumentException
Copy a submatrix. Rows and columns are indicated counting from 0 to n-1.

Specified by:
copySubMatrix in interface RealMatrix
Parameters:
selectedRows - Array of row indices.
selectedColumns - Array of column indices.
destination - The arrays where the submatrix data should be copied (if larger than rows/columns counts, only the upper-left part will be used)
Throws:
MatrixIndexException - if the indices are not valid
IllegalArgumentException - if the destination array is too small

setSubMatrix

public void setSubMatrix(double[][] subMatrix,
                         int row,
                         int column)
                  throws MatrixIndexException
Replace the submatrix starting at row, column using data in the input subMatrix array. Indexes are 0-based.

Example:
Starting with

 1  2  3  4
 5  6  7  8
 9  0  1  2
 
and subMatrix = {{3, 4} {5,6}}, invoking setSubMatrix(subMatrix,1,1)) will result in
 1  2  3  4
 5  3  4  8
 9  5  6  2
 

Specified by:
setSubMatrix in interface RealMatrix
Parameters:
subMatrix - array containing the submatrix replacement data
row - row coordinate of the top, left element to be replaced
column - column coordinate of the top, left element to be replaced
Throws:
MatrixIndexException - if subMatrix does not fit into this matrix from element in (row, column)

getRowMatrix

public RealMatrix getRowMatrix(int row)
                        throws MatrixIndexException
Returns the entries in row number row as a row matrix. Row indices start at 0.

Specified by:
getRowMatrix in interface RealMatrix
Parameters:
row - the row to be fetched
Returns:
row matrix
Throws:
MatrixIndexException - if the specified row index is invalid

setRowMatrix

public void setRowMatrix(int row,
                         RealMatrix matrix)
                  throws MatrixIndexException,
                         InvalidMatrixException
Sets the entries in row number row as a row matrix. Row indices start at 0.

Specified by:
setRowMatrix in interface RealMatrix
Parameters:
row - the row to be set
matrix - row matrix (must have one row and the same number of columns as the instance)
Throws:
MatrixIndexException - if the specified row index is invalid
InvalidMatrixException - if the matrix dimensions do not match one instance row

getColumnMatrix

public RealMatrix getColumnMatrix(int column)
                           throws MatrixIndexException
Returns the entries in column number column as a column matrix. Column indices start at 0.

Specified by:
getColumnMatrix in interface RealMatrix
Parameters:
column - the column to be fetched
Returns:
column matrix
Throws:
MatrixIndexException - if the specified column index is invalid

setColumnMatrix

public void setColumnMatrix(int column,
                            RealMatrix matrix)
                     throws MatrixIndexException,
                            InvalidMatrixException
Sets the entries in column number column as a column matrix. Column indices start at 0.

Specified by:
setColumnMatrix in interface RealMatrix
Parameters:
column - the column to be set
matrix - column matrix (must have one column and the same number of rows as the instance)
Throws:
MatrixIndexException - if the specified column index is invalid
InvalidMatrixException - if the matrix dimensions do not match one instance column

getRowVector

public RealVector getRowVector(int row)
                        throws MatrixIndexException
Returns the entries in row number row as a vector. Row indices start at 0.

Specified by:
getRowVector in interface RealMatrix
Parameters:
row - the row to be fetched
Returns:
row vector
Throws:
MatrixIndexException - if the specified row index is invalid

setRowVector

public void setRowVector(int row,
                         RealVector vector)
                  throws MatrixIndexException,
                         InvalidMatrixException
Sets the entries in row number row as a vector. Row indices start at 0.

Specified by:
setRowVector in interface RealMatrix
Parameters:
row - the row to be set
vector - row vector (must have the same number of columns as the instance)
Throws:
MatrixIndexException - if the specified row index is invalid
InvalidMatrixException - if the vector dimension does not match one instance row

getColumnVector

public RealVector getColumnVector(int column)
                           throws MatrixIndexException
Returns the entries in column number column as a vector. Column indices start at 0.

Specified by:
getColumnVector in interface RealMatrix
Parameters:
column - the column to be fetched
Returns:
column vector
Throws:
MatrixIndexException - if the specified column index is invalid

setColumnVector

public void setColumnVector(int column,
                            RealVector vector)
                     throws MatrixIndexException,
                            InvalidMatrixException
Sets the entries in column number column as a vector. Column indices start at 0.

Specified by:
setColumnVector in interface RealMatrix
Parameters:
column - the column to be set
vector - column vector (must have the same number of rows as the instance)
Throws:
MatrixIndexException - if the specified column index is invalid
InvalidMatrixException - if the vector dimension does not match one instance column

getRow

public double[] getRow(int row)
                throws MatrixIndexException
Returns the entries in row number row as an array.

Row indices start at 0. A MatrixIndexException is thrown unless 0 <= row < rowDimension.

Specified by:
getRow in interface RealMatrix
Parameters:
row - the row to be fetched
Returns:
array of entries in the row
Throws:
MatrixIndexException - if the specified row index is not valid

setRow

public void setRow(int row,
                   double[] array)
            throws MatrixIndexException,
                   InvalidMatrixException
Sets the entries in row number row as a row matrix. Row indices start at 0.

Specified by:
setRow in interface RealMatrix
Parameters:
row - the row to be set
array - row matrix (must have the same number of columns as the instance)
Throws:
MatrixIndexException - if the specified row index is invalid
InvalidMatrixException - if the array size does not match one instance row

getColumn

public double[] getColumn(int column)
                   throws MatrixIndexException
Returns the entries in column number col as an array.

Column indices start at 0. A MatrixIndexException is thrown unless 0 <= column < columnDimension.

Specified by:
getColumn in interface RealMatrix
Parameters:
column - the column to be fetched
Returns:
array of entries in the column
Throws:
MatrixIndexException - if the specified column index is not valid

setColumn

public void setColumn(int column,
                      double[] array)
               throws MatrixIndexException,
                      InvalidMatrixException
Sets the entries in column number column as a column matrix. Column indices start at 0.

Specified by:
setColumn in interface RealMatrix
Parameters:
column - the column to be set
array - column array (must have the same number of rows as the instance)
Throws:
MatrixIndexException - if the specified column index is invalid
InvalidMatrixException - if the array size does not match one instance column

getEntry

public abstract double getEntry(int row,
                                int column)
                         throws MatrixIndexException
Returns the entry in the specified row and column.

Row and column indices start at 0 and must satisfy

otherwise a MatrixIndexException is thrown.

Specified by:
getEntry in interface RealMatrix
Parameters:
row - row location of entry to be fetched
column - column location of entry to be fetched
Returns:
matrix entry in row,column
Throws:
MatrixIndexException - if the row or column index is not valid

setEntry

public abstract void setEntry(int row,
                              int column,
                              double value)
                       throws MatrixIndexException
Set the entry in the specified row and column.

Row and column indices start at 0 and must satisfy

otherwise a MatrixIndexException is thrown.

Specified by:
setEntry in interface RealMatrix
Parameters:
row - row location of entry to be set
column - column location of entry to be set
value - matrix entry to be set in row,column
Throws:
MatrixIndexException - if the row or column index is not valid

addToEntry

public abstract void addToEntry(int row,
                                int column,
                                double increment)
                         throws MatrixIndexException
Change an entry in the specified row and column.

Row and column indices start at 0 and must satisfy

otherwise a MatrixIndexException is thrown.

Specified by:
addToEntry in interface RealMatrix
Parameters:
row - row location of entry to be set
column - column location of entry to be set
increment - value to add to the current matrix entry in row,column
Throws:
MatrixIndexException - if the row or column index is not valid

multiplyEntry

public abstract void multiplyEntry(int row,
                                   int column,
                                   double factor)
                            throws MatrixIndexException
Change an entry in the specified row and column.

Row and column indices start at 0 and must satisfy

otherwise a MatrixIndexException is thrown.

Specified by:
multiplyEntry in interface RealMatrix
Parameters:
row - row location of entry to be set
column - column location of entry to be set
factor - multiplication factor for the current matrix entry in row,column
Throws:
MatrixIndexException - if the row or column index is not valid

transpose

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

Specified by:
transpose in interface RealMatrix
Returns:
transpose matrix

inverse

@Deprecated
public RealMatrix inverse()
                   throws InvalidMatrixException
Deprecated. 

Returns the inverse of this matrix.

Specified by:
inverse in interface RealMatrix
Returns:
inverse matrix
Throws:
InvalidMatrixException - if this is not invertible

getDeterminant

@Deprecated
public double getDeterminant()
                      throws InvalidMatrixException
Deprecated. 

Returns the determinant of this matrix.

Specified by:
getDeterminant in interface RealMatrix
Returns:
determinant
Throws:
InvalidMatrixException

isSquare

public boolean isSquare()
Is this a square matrix?

Specified by:
isSquare in interface AnyMatrix
Returns:
true if the matrix is square (rowDimension = columnDimension)

isSingular

@Deprecated
public boolean isSingular()
Deprecated. 

Is this a singular matrix?

Specified by:
isSingular in interface RealMatrix
Returns:
true if the matrix is singular

getRowDimension

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

Specified by:
getRowDimension in interface AnyMatrix
Returns:
rowDimension

getColumnDimension

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

Specified by:
getColumnDimension in interface AnyMatrix
Returns:
columnDimension

getTrace

public double getTrace()
                throws NonSquareMatrixException
Returns the trace of the matrix (the sum of the elements on the main diagonal).

Specified by:
getTrace in interface RealMatrix
Returns:
trace
Throws:
NonSquareMatrixException - if the matrix is not square

operate

public double[] operate(double[] v)
                 throws IllegalArgumentException
Returns the result of multiplying this by the vector v.

Specified by:
operate in interface RealMatrix
Parameters:
v - the vector to operate on
Returns:
this*v
Throws:
IllegalArgumentException - if columnDimension != v.size()

operate

public RealVector operate(RealVector v)
                   throws IllegalArgumentException
Returns the result of multiplying this by the vector v.

Specified by:
operate in interface RealMatrix
Parameters:
v - the vector to operate on
Returns:
this*v
Throws:
IllegalArgumentException - if columnDimension != v.size()

preMultiply

public double[] preMultiply(double[] v)
                     throws IllegalArgumentException
Returns the (row) vector result of premultiplying this by the vector v.

Specified by:
preMultiply in interface RealMatrix
Parameters:
v - the row vector to premultiply by
Returns:
v*this
Throws:
IllegalArgumentException - if rowDimension != v.size()

preMultiply

public RealVector preMultiply(RealVector v)
                       throws IllegalArgumentException
Returns the (row) vector result of premultiplying this by the vector v.

Specified by:
preMultiply in interface RealMatrix
Parameters:
v - the row vector to premultiply by
Returns:
v*this
Throws:
IllegalArgumentException - if rowDimension != v.size()

walkInRowOrder

public double walkInRowOrder(RealMatrixChangingVisitor visitor)
                      throws MatrixVisitorException
Visit (and possibly change) all matrix entries in row order.

Row order starts at upper left and iterating through all elements of a row from left to right before going to the leftmost element of the next row.

Specified by:
walkInRowOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
Returns:
the value returned by RealMatrixChangingVisitor.end() at the end of the walk
Throws:
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInRowOrder

public double walkInRowOrder(RealMatrixPreservingVisitor visitor)
                      throws MatrixVisitorException
Visit (but don't change) all matrix entries in row order.

Row order starts at upper left and iterating through all elements of a row from left to right before going to the leftmost element of the next row.

Specified by:
walkInRowOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
Returns:
the value returned by RealMatrixPreservingVisitor.end() at the end of the walk
Throws:
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInRowOrder

public double walkInRowOrder(RealMatrixChangingVisitor visitor,
                             int startRow,
                             int endRow,
                             int startColumn,
                             int endColumn)
                      throws MatrixIndexException,
                             MatrixVisitorException
Visit (and possibly change) some matrix entries in row order.

Row order starts at upper left and iterating through all elements of a row from left to right before going to the leftmost element of the next row.

Specified by:
walkInRowOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
startRow - Initial row index
endRow - Final row index (inclusive)
startColumn - Initial column index
endColumn - Final column index
Returns:
the value returned by RealMatrixChangingVisitor.end() at the end of the walk
Throws:
MatrixIndexException - if the indices are not valid
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInRowOrder

public double walkInRowOrder(RealMatrixPreservingVisitor visitor,
                             int startRow,
                             int endRow,
                             int startColumn,
                             int endColumn)
                      throws MatrixIndexException,
                             MatrixVisitorException
Visit (but don't change) some matrix entries in row order.

Row order starts at upper left and iterating through all elements of a row from left to right before going to the leftmost element of the next row.

Specified by:
walkInRowOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
startRow - Initial row index
endRow - Final row index (inclusive)
startColumn - Initial column index
endColumn - Final column index
Returns:
the value returned by RealMatrixPreservingVisitor.end() at the end of the walk
Throws:
MatrixIndexException - if the indices are not valid
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInColumnOrder

public double walkInColumnOrder(RealMatrixChangingVisitor visitor)
                         throws MatrixVisitorException
Visit (and possibly change) all matrix entries in column order.

Column order starts at upper left and iterating through all elements of a column from top to bottom before going to the topmost element of the next column.

Specified by:
walkInColumnOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
Returns:
the value returned by RealMatrixChangingVisitor.end() at the end of the walk
Throws:
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInColumnOrder

public double walkInColumnOrder(RealMatrixPreservingVisitor visitor)
                         throws MatrixVisitorException
Visit (but don't change) all matrix entries in column order.

Column order starts at upper left and iterating through all elements of a column from top to bottom before going to the topmost element of the next column.

Specified by:
walkInColumnOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
Returns:
the value returned by RealMatrixPreservingVisitor.end() at the end of the walk
Throws:
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInColumnOrder

public double walkInColumnOrder(RealMatrixChangingVisitor visitor,
                                int startRow,
                                int endRow,
                                int startColumn,
                                int endColumn)
                         throws MatrixIndexException,
                                MatrixVisitorException
Visit (and possibly change) some matrix entries in column order.

Column order starts at upper left and iterating through all elements of a column from top to bottom before going to the topmost element of the next column.

Specified by:
walkInColumnOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
startRow - Initial row index
endRow - Final row index (inclusive)
startColumn - Initial column index
endColumn - Final column index
Returns:
the value returned by RealMatrixChangingVisitor.end() at the end of the walk
Throws:
MatrixIndexException - if the indices are not valid
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInColumnOrder

public double walkInColumnOrder(RealMatrixPreservingVisitor visitor,
                                int startRow,
                                int endRow,
                                int startColumn,
                                int endColumn)
                         throws MatrixIndexException,
                                MatrixVisitorException
Visit (but don't change) some matrix entries in column order.

Column order starts at upper left and iterating through all elements of a column from top to bottom before going to the topmost element of the next column.

Specified by:
walkInColumnOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
startRow - Initial row index
endRow - Final row index (inclusive)
startColumn - Initial column index
endColumn - Final column index
Returns:
the value returned by RealMatrixPreservingVisitor.end() at the end of the walk
Throws:
MatrixIndexException - if the indices are not valid
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInOptimizedOrder

public double walkInOptimizedOrder(RealMatrixChangingVisitor visitor)
                            throws MatrixVisitorException
Visit (and possibly change) all matrix entries using the fastest possible order.

The fastest walking order depends on the exact matrix class. It may be different from traditional row or column orders.

Specified by:
walkInOptimizedOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
Returns:
the value returned by RealMatrixChangingVisitor.end() at the end of the walk
Throws:
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInOptimizedOrder

public double walkInOptimizedOrder(RealMatrixPreservingVisitor visitor)
                            throws MatrixVisitorException
Visit (but don't change) all matrix entries using the fastest possible order.

The fastest walking order depends on the exact matrix class. It may be different from traditional row or column orders.

Specified by:
walkInOptimizedOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
Returns:
the value returned by RealMatrixPreservingVisitor.end() at the end of the walk
Throws:
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInOptimizedOrder

public double walkInOptimizedOrder(RealMatrixChangingVisitor visitor,
                                   int startRow,
                                   int endRow,
                                   int startColumn,
                                   int endColumn)
                            throws MatrixIndexException,
                                   MatrixVisitorException
Visit (and possibly change) some matrix entries using the fastest possible order.

The fastest walking order depends on the exact matrix class. It may be different from traditional row or column orders.

Specified by:
walkInOptimizedOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
startRow - Initial row index
endRow - Final row index (inclusive)
startColumn - Initial column index
endColumn - Final column index (inclusive)
Returns:
the value returned by RealMatrixChangingVisitor.end() at the end of the walk
Throws:
MatrixIndexException - if the indices are not valid
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor, int, int, int, int)

walkInOptimizedOrder

public double walkInOptimizedOrder(RealMatrixPreservingVisitor visitor,
                                   int startRow,
                                   int endRow,
                                   int startColumn,
                                   int endColumn)
                            throws MatrixIndexException,
                                   MatrixVisitorException
Visit (but don't change) some matrix entries using the fastest possible order.

The fastest walking order depends on the exact matrix class. It may be different from traditional row or column orders.

Specified by:
walkInOptimizedOrder in interface RealMatrix
Parameters:
visitor - visitor used to process all matrix entries
startRow - Initial row index
endRow - Final row index (inclusive)
startColumn - Initial column index
endColumn - Final column index (inclusive)
Returns:
the value returned by RealMatrixPreservingVisitor.end() at the end of the walk
Throws:
MatrixIndexException - if the indices are not valid
MatrixVisitorException - if the visitor cannot process an entry
See Also:
RealMatrix.walkInRowOrder(RealMatrixChangingVisitor), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor), RealMatrix.walkInRowOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInRowOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor), RealMatrix.walkInColumnOrder(RealMatrixChangingVisitor, int, int, int, int), RealMatrix.walkInColumnOrder(RealMatrixPreservingVisitor, int, int, int, int), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixPreservingVisitor), RealMatrix.walkInOptimizedOrder(RealMatrixChangingVisitor, int, int, int, int)

solve

@Deprecated
public double[] solve(double[] b)
               throws IllegalArgumentException,
                      InvalidMatrixException
Deprecated. 

Returns the solution vector for a linear system with coefficient matrix = this and constant vector = b.

Specified by:
solve in interface RealMatrix
Parameters:
b - constant vector
Returns:
vector of solution values to AX = b, where A is *this
Throws:
IllegalArgumentException - if this.rowDimension != b.length
InvalidMatrixException - if this matrix is not square or is singular

solve

@Deprecated
public RealMatrix solve(RealMatrix b)
                 throws IllegalArgumentException,
                        InvalidMatrixException
Deprecated. 

Returns a matrix of (column) solution vectors for linear systems with coefficient matrix = this and constant vectors = columns of b.

Specified by:
solve in interface RealMatrix
Parameters:
b - matrix of constant vectors forming RHS of linear systems to to solve
Returns:
matrix of solution vectors
Throws:
IllegalArgumentException - if this.rowDimension != row dimension
InvalidMatrixException - if this matrix is not square or is singular

luDecompose

@Deprecated
public void luDecompose()
                 throws InvalidMatrixException
Deprecated. as of release 2.0, replaced by LUDecomposition

Computes a new LU decomposition for this matrix, storing the result for use by other methods.

Implementation Note:
Uses Crout's algorithm, with partial pivoting.

Usage Note:
This method should rarely be invoked directly. Its only use is to force recomputation of the LU decomposition when changes have been made to the underlying data using direct array references. Changes made using setXxx methods will trigger recomputation when needed automatically.

Throws:
InvalidMatrixException - if the matrix is non-square or singular.

toString

public String toString()
Get a string representation for this matrix.

Overrides:
toString in class Object
Returns:
a string representation for this matrix

equals

public boolean equals(Object object)
Returns true iff object is a RealMatrix instance with the same dimensions as this and all corresponding matrix entries are equal.

Overrides:
equals in class Object
Parameters:
object - the object to test equality against.
Returns:
true if object equals this

hashCode

public int hashCode()
Computes a hashcode for the matrix.

Overrides:
hashCode in class Object
Returns:
hashcode for matrix


Copyright © 2003-2011 The Apache Software Foundation. All Rights Reserved.