|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.commons.math.linear.BigMatrixImpl
Array2DRowFieldMatrix with a BigReal parameter
@Deprecated public class BigMatrixImpl
Implementation of BigMatrix using a BigDecimal[][] array to store entries
and
LU decompostion to support linear system
solution and inverse.
The LU decompostion is performed as needed, to support the following operations:
Usage notes:
getDataRef(), then the stored
LU decomposition will not be discarded. In this case, you need to
explicitly invoke LUDecompose() to recompute the decomposition
before using any of the methods above.BigMatrix interface, matrix element indexing
is 0-based -- e.g., getEntry(0, 0)
returns the element in the first row, first column of the matrix.
| Field Summary | |
|---|---|
protected BigDecimal[][] |
data
Deprecated. Entries of the matrix |
protected BigDecimal[][] |
lu
Deprecated. Entries of cached LU decomposition. |
protected int |
parity
Deprecated. Parity of the permutation associated with the LU decomposition |
protected int[] |
permutation
Deprecated. Permutation associated with LU decomposition |
| Constructor Summary | |
|---|---|
BigMatrixImpl()
Deprecated. Creates a matrix with no data |
|
BigMatrixImpl(BigDecimal[] v)
Deprecated. Create a new (column) BigMatrix using v as the
data for the unique column of the v.length x 1 matrix
created. |
|
BigMatrixImpl(BigDecimal[][] d)
Deprecated. Create a new BigMatrix using d as the underlying
data array. |
|
BigMatrixImpl(BigDecimal[][] d,
boolean copyArray)
Deprecated. Create a new BigMatrix using the input array as the underlying data array. |
|
BigMatrixImpl(double[][] d)
Deprecated. Create a new BigMatrix using d as the underlying
data array. |
|
BigMatrixImpl(int rowDimension,
int columnDimension)
Deprecated. Create a new BigMatrix with the supplied row and column dimensions. |
|
BigMatrixImpl(String[][] d)
Deprecated. Create a new BigMatrix using the values represented by the strings in d as the underlying data array. |
|
| Method Summary | |
|---|---|
BigMatrix |
add(BigMatrix m)
Deprecated. Compute the sum of this and m. |
BigMatrixImpl |
add(BigMatrixImpl m)
Deprecated. Compute the sum of this and m. |
BigMatrix |
copy()
Deprecated. Create a new BigMatrix which is a copy of this. |
boolean |
equals(Object object)
Deprecated. Returns true iff object is a
BigMatrixImpl instance with the same dimensions as this
and all corresponding matrix entries are equal. |
BigDecimal[] |
getColumn(int col)
Deprecated. Returns the entries in column number col as an array. |
double[] |
getColumnAsDoubleArray(int col)
Deprecated. Returns the entries in column number col as an array
of double values. |
int |
getColumnDimension()
Deprecated. Returns the number of columns in the matrix. |
BigMatrix |
getColumnMatrix(int column)
Deprecated. Returns the entries in column number column
as a column matrix. |
BigDecimal[][] |
getData()
Deprecated. Returns matrix entries as a two-dimensional array. |
double[][] |
getDataAsDoubleArray()
Deprecated. Returns matrix entries as a two-dimensional array. |
BigDecimal[][] |
getDataRef()
Deprecated. Returns a reference to the underlying data array. |
BigDecimal |
getDeterminant()
Deprecated. Returns the determinant of this matrix. |
BigDecimal |
getEntry(int row,
int column)
Deprecated. Returns the entry in the specified row and column. |
double |
getEntryAsDouble(int row,
int column)
Deprecated. Returns the entry in the specified row and column as a double. |
protected BigMatrix |
getLUMatrix()
Deprecated. Returns the LU decomposition as a BigMatrix. |
BigDecimal |
getNorm()
Deprecated. Returns the maximum absolute row sum norm of the matrix. |
protected int[] |
getPermutation()
Deprecated. Returns the permutation associated with the lu decomposition. |
int |
getRoundingMode()
Deprecated. Gets the rounding mode for division operations The default is BigDecimal.ROUND_HALF_UP |
BigDecimal[] |
getRow(int row)
Deprecated. Returns the entries in row number row as an array. |
double[] |
getRowAsDoubleArray(int row)
Deprecated. Returns the entries in row number row as an array
of double values. |
int |
getRowDimension()
Deprecated. Returns the number of rows in the matrix. |
BigMatrix |
getRowMatrix(int row)
Deprecated. Returns the entries in row number row
as a row matrix. |
int |
getScale()
Deprecated. Sets the scale for division operations. |
BigMatrix |
getSubMatrix(int[] selectedRows,
int[] selectedColumns)
Deprecated. Gets a submatrix. |
BigMatrix |
getSubMatrix(int startRow,
int endRow,
int startColumn,
int endColumn)
Deprecated. Gets a submatrix. |
BigDecimal |
getTrace()
Deprecated. Returns the trace of the matrix (the sum of the elements on the main diagonal). |
int |
hashCode()
Deprecated. Computes a hashcode for the matrix. |
BigMatrix |
inverse()
Deprecated. Returns the inverse matrix if this matrix is invertible. |
boolean |
isSingular()
Deprecated. Is this a singular matrix? |
boolean |
isSquare()
Deprecated. Is this a square matrix? |
void |
luDecompose()
Deprecated. Computes a new LU decompostion for this matrix, storing the result for use by other methods. |
BigMatrix |
multiply(BigMatrix m)
Deprecated. Returns the result of postmultiplying this by m. |
BigMatrixImpl |
multiply(BigMatrixImpl m)
Deprecated. Returns the result of postmultiplying this by m. |
BigDecimal[] |
operate(BigDecimal[] v)
Deprecated. Returns the result of multiplying this by the vector v. |
BigDecimal[] |
operate(double[] v)
Deprecated. Returns the result of multiplying this by the vector v. |
BigDecimal[] |
preMultiply(BigDecimal[] v)
Deprecated. Returns the (row) vector result of premultiplying this by the vector v. |
BigMatrix |
preMultiply(BigMatrix m)
Deprecated. Returns the result premultiplying this by m. |
BigMatrix |
scalarAdd(BigDecimal d)
Deprecated. Returns the result of adding d to each entry of this. |
BigMatrix |
scalarMultiply(BigDecimal d)
Deprecated. Returns the result of multiplying each entry of this by d |
void |
setRoundingMode(int roundingMode)
Deprecated. Sets the rounding mode for decimal divisions. |
void |
setScale(int scale)
Deprecated. Sets the scale for division operations. |
void |
setSubMatrix(BigDecimal[][] subMatrix,
int row,
int column)
Deprecated. Replace the submatrix starting at row, column using data in
the input subMatrix array. |
BigDecimal[] |
solve(BigDecimal[] b)
Deprecated. Returns a matrix of (column) solution vectors for linear systems with coefficient matrix = this and constant vectors = columns of b. |
BigMatrix |
solve(BigMatrix b)
Deprecated. Returns a matrix of (column) solution vectors for linear systems with coefficient matrix = this and constant vectors = columns of b. |
BigDecimal[] |
solve(double[] b)
Deprecated. Returns a matrix of (column) solution vectors for linear systems with coefficient matrix = this and constant vectors = columns of b. |
BigMatrix |
subtract(BigMatrix m)
Deprecated. Compute this minus m. |
BigMatrixImpl |
subtract(BigMatrixImpl m)
Deprecated. Compute this minus m. |
String |
toString()
Deprecated. Get a string representation for this matrix. |
BigMatrix |
transpose()
Deprecated. Returns the transpose matrix. |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
protected BigDecimal[][] data
protected BigDecimal[][] lu
protected int[] permutation
protected int parity
| Constructor Detail |
|---|
public BigMatrixImpl()
public BigMatrixImpl(int rowDimension,
int columnDimension)
rowDimension - the number of rows in the new matrixcolumnDimension - the number of columns in the new matrix
IllegalArgumentException - if row or column dimension is not
positivepublic BigMatrixImpl(BigDecimal[][] d)
d as the underlying
data array.
The input array is copied, not referenced. This constructor has
the same effect as calling BigMatrixImpl(BigDecimal[][], boolean)
with the second argument set to true.
d - data for new matrix
IllegalArgumentException - if d is not rectangular
(not all rows have the same length) or empty
NullPointerException - if d is null
public BigMatrixImpl(BigDecimal[][] d,
boolean copyArray)
If an array is built specially in order to be embedded in a
BigMatrix and not used directly, the
copyArray may be
set to false
d - data for new matrixcopyArray - if true, the input array will be copied, otherwise
it will be referenced
IllegalArgumentException - if d is not rectangular
(not all rows have the same length) or empty
NullPointerException - if d is nullBigMatrixImpl(BigDecimal[][])
public BigMatrixImpl(double[][] d)
d as the underlying
data array.
Since the underlying array will hold BigDecimal
instances, it will be created.
d - data for new matrix
IllegalArgumentException - if d is not rectangular
(not all rows have the same length) or empty
NullPointerException - if d is nullpublic BigMatrixImpl(String[][] d)
d as the underlying data array.
d - data for new matrix
IllegalArgumentException - if d is not rectangular
(not all rows have the same length) or empty
NullPointerException - if d is nullpublic BigMatrixImpl(BigDecimal[] v)
v as the
data for the unique column of the v.length x 1 matrix
created.
The input array is copied, not referenced.
v - column vector holding data for new matrix| Method Detail |
|---|
public BigMatrix copy()
copy in interface BigMatrix
public BigMatrix add(BigMatrix m)
throws IllegalArgumentException
m.
add in interface BigMatrixm - matrix to be added
IllegalArgumentException - if m is not the same size as this
public BigMatrixImpl add(BigMatrixImpl m)
throws IllegalArgumentException
m.
m - matrix to be added
IllegalArgumentException - if m is not the same size as this
public BigMatrix subtract(BigMatrix m)
throws IllegalArgumentException
m.
subtract in interface BigMatrixm - matrix to be subtracted
IllegalArgumentException - if m is not the same size as this
public BigMatrixImpl subtract(BigMatrixImpl m)
throws IllegalArgumentException
m.
m - matrix to be subtracted
IllegalArgumentException - if m is not the same size as thispublic BigMatrix scalarAdd(BigDecimal d)
scalarAdd in interface BigMatrixd - value to be added to each entry
public BigMatrix scalarMultiply(BigDecimal d)
d
scalarMultiply in interface BigMatrixd - value to multiply all entries by
public BigMatrix multiply(BigMatrix m)
throws IllegalArgumentException
m.
multiply in interface BigMatrixm - matrix to postmultiply by
IllegalArgumentException - if columnDimension(this) != rowDimension(m)
public BigMatrixImpl multiply(BigMatrixImpl m)
throws IllegalArgumentException
m.
m - matrix to postmultiply by
IllegalArgumentException - if columnDimension(this) != rowDimension(m)
public BigMatrix preMultiply(BigMatrix m)
throws IllegalArgumentException
m.
preMultiply in interface BigMatrixm - matrix to premultiply by
IllegalArgumentException - if rowDimension(this) != columnDimension(m)public BigDecimal[][] getData()
Makes a fresh copy of the underlying data.
getData in interface BigMatrixpublic double[][] getDataAsDoubleArray()
Makes a fresh copy of the underlying data converted to
double values.
getDataAsDoubleArray in interface BigMatrixpublic BigDecimal[][] getDataRef()
Does not make a fresh copy of the underlying data.
public int getRoundingMode()
BigDecimal.ROUND_HALF_UP
getRoundingMode in interface BigMatrixBigDecimalpublic void setRoundingMode(int roundingMode)
roundingMode - rounding mode for decimal divisionsBigDecimalpublic int getScale()
BigDecimalpublic void setScale(int scale)
scale - scale for division operationsBigDecimalpublic BigDecimal getNorm()
getNorm in interface BigMatrix
public BigMatrix getSubMatrix(int startRow,
int endRow,
int startColumn,
int endColumn)
throws MatrixIndexException
getSubMatrix in interface BigMatrixstartRow - Initial row indexendRow - Final row indexstartColumn - Initial column indexendColumn - Final column index
MatrixIndexException - if row or column selections are not valid
public BigMatrix getSubMatrix(int[] selectedRows,
int[] selectedColumns)
throws MatrixIndexException
getSubMatrix in interface BigMatrixselectedRows - Array of row indices must be non-emptyselectedColumns - Array of column indices must be non-empty
MatrixIndexException - if supplied row or column index arrays
are not valid
public void setSubMatrix(BigDecimal[][] subMatrix,
int row,
int column)
throws MatrixIndexException
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 2and
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
subMatrix - array containing the submatrix replacement datarow - row coordinate of the top, left element to be replacedcolumn - column coordinate of the top, left element to be replaced
MatrixIndexException - if subMatrix does not fit into this
matrix from element in (row, column)
IllegalArgumentException - if subMatrix is not rectangular
(not all rows have the same length) or empty
NullPointerException - if subMatrix is null
public BigMatrix getRowMatrix(int row)
throws MatrixIndexException
row
as a row matrix. Row indices start at 0.
getRowMatrix in interface BigMatrixrow - the row to be fetched
MatrixIndexException - if the specified row index is invalid
public BigMatrix getColumnMatrix(int column)
throws MatrixIndexException
column
as a column matrix. Column indices start at 0.
getColumnMatrix in interface BigMatrixcolumn - the column to be fetched
MatrixIndexException - if the specified column index is invalid
public BigDecimal[] getRow(int row)
throws MatrixIndexException
row as an array.
Row indices start at 0. A MatrixIndexException is thrown
unless 0 <= row < rowDimension.
getRow in interface BigMatrixrow - the row to be fetched
MatrixIndexException - if the specified row index is not valid
public double[] getRowAsDoubleArray(int row)
throws MatrixIndexException
row as an array
of double values.
Row indices start at 0. A MatrixIndexException is thrown
unless 0 <= row < rowDimension.
getRowAsDoubleArray in interface BigMatrixrow - the row to be fetched
MatrixIndexException - if the specified row index is not valid
public BigDecimal[] getColumn(int col)
throws MatrixIndexException
col as an array.
Column indices start at 0. A MatrixIndexException is thrown
unless 0 <= column < columnDimension.
getColumn in interface BigMatrixcol - the column to be fetched
MatrixIndexException - if the specified column index is not valid
public double[] getColumnAsDoubleArray(int col)
throws MatrixIndexException
col as an array
of double values.
Column indices start at 0. A MatrixIndexException is thrown
unless 0 <= column < columnDimension.
getColumnAsDoubleArray in interface BigMatrixcol - the column to be fetched
MatrixIndexException - if the specified column index is not valid
public BigDecimal getEntry(int row,
int column)
throws MatrixIndexException
Row and column indices start at 0 and must satisfy
0 <= row < rowDimension 0 <= column < columnDimensionMatrixIndexException is thrown.
getEntry in interface BigMatrixrow - row location of entry to be fetchedcolumn - column location of entry to be fetched
MatrixIndexException - if the row or column index is not valid
public double getEntryAsDouble(int row,
int column)
throws MatrixIndexException
Row and column indices start at 0 and must satisfy
0 <= row < rowDimension 0 <= column < columnDimensionMatrixIndexException is thrown.
getEntryAsDouble in interface BigMatrixrow - row location of entry to be fetchedcolumn - column location of entry to be fetched
MatrixIndexException - if the row
or column index is not validpublic BigMatrix transpose()
transpose in interface BigMatrix
public BigMatrix inverse()
throws InvalidMatrixException
inverse in interface BigMatrixInvalidMatrixException - if this is not invertible
public BigDecimal getDeterminant()
throws InvalidMatrixException
getDeterminant in interface BigMatrixInvalidMatrixException - if matrix is not squarepublic boolean isSquare()
isSquare in interface AnyMatrixpublic boolean isSingular()
public int getRowDimension()
getRowDimension in interface AnyMatrixpublic int getColumnDimension()
getColumnDimension in interface AnyMatrix
public BigDecimal getTrace()
throws IllegalArgumentException
getTrace in interface BigMatrixIllegalArgumentException - if this matrix is not square.
public BigDecimal[] operate(BigDecimal[] v)
throws IllegalArgumentException
v.
operate in interface BigMatrixv - the vector to operate on
IllegalArgumentException - if columnDimension != v.size()
public BigDecimal[] operate(double[] v)
throws IllegalArgumentException
v.
v - the vector to operate on
IllegalArgumentException - if columnDimension != v.size()
public BigDecimal[] preMultiply(BigDecimal[] v)
throws IllegalArgumentException
v.
preMultiply in interface BigMatrixv - the row vector to premultiply by
IllegalArgumentException - if rowDimension != v.size()
public BigDecimal[] solve(BigDecimal[] b)
throws IllegalArgumentException,
InvalidMatrixException
b.
solve in interface BigMatrixb - array of constants forming RHS of linear systems to
to solve
IllegalArgumentException - if this.rowDimension != row dimension
InvalidMatrixException - if this matrix is not square or is singular
public BigDecimal[] solve(double[] b)
throws IllegalArgumentException,
InvalidMatrixException
b.
b - array of constants forming RHS of linear systems to
to solve
IllegalArgumentException - if this.rowDimension != row dimension
InvalidMatrixException - if this matrix is not square or is singular
public BigMatrix solve(BigMatrix b)
throws IllegalArgumentException,
InvalidMatrixException
b.
solve in interface BigMatrixb - matrix of constant vectors forming RHS of linear systems to
to solve
IllegalArgumentException - if this.rowDimension != row dimension
InvalidMatrixException - if this matrix is not square or is singular
public void luDecompose()
throws InvalidMatrixException
Implementation Note:
Uses
Crout's algortithm, 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.
InvalidMatrixException - if the matrix is non-square or singular.public String toString()
toString in class Objectpublic boolean equals(Object object)
object is a
BigMatrixImpl instance with the same dimensions as this
and all corresponding matrix entries are equal. BigDecimal.equals
is used to compare corresponding entries.
equals in class Objectobject - the object to test equality against.
public int hashCode()
hashCode in class Object
protected BigMatrix getLUMatrix()
throws InvalidMatrixException
The matrix returned is a compact representation of the LU decomposition. Elements below the main diagonal correspond to entries of the "L" matrix; elements on and above the main diagonal correspond to entries of the "U" matrix.
Example:
Returned matrix L U
2 3 1 1 0 0 2 3 1
5 4 6 5 1 0 0 4 6
1 7 8 1 7 1 0 0 8
The L and U matrices satisfy the matrix equation LU = permuteRows(this),
InvalidMatrixException - if the matrix is non-square or singular.protected int[] getPermutation()
Example: permutation = [1, 2, 0] means current 2nd row is first, current third row is second and current first row is last.
Returns a fresh copy of the array.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||