|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math.linear.RealMatrixImpl
Implementation for RealMatrix using a double[][] 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 note:
The LU decomposition is stored and reused on subsequent calls. If matrix
data are modified using any of the public setXxx methods, the saved
decomposition is discarded. If data are modified via references to the
underlying array obtained using 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.
Constructor Summary | |
RealMatrixImpl()
Creates a matrix with no data |
|
RealMatrixImpl(double[] v)
Create a new (column) RealMatrix using v as the
data for the unique column of the v.length x 1 matrix
created. |
|
RealMatrixImpl(double[][] d)
Create a new RealMatrix using the data as the underlying
data array. |
|
RealMatrixImpl(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 . |
RealMatrix |
copy()
Create a new RealMatrix which is a copy of this. |
double[] |
getColumn(int col)
Returns the entries in column number col as an array. |
int |
getColumnDimension()
Returns the number of columns in the matrix. |
double[][] |
getData()
Returns matrix entries as a two-dimensional array. |
double[][] |
getDataRef()
Returns a reference to the underlying data array. |
double |
getDeterminant()
Returns the determinant of this matrix. |
double |
getEntry(int row,
int column)
Returns the entry in the specified row and column. |
protected RealMatrix |
getIdentity(int dimension)
Returns dimension x dimension identity matrix. |
double |
getNorm()
Returns the maximum absolute row sum norm of the matrix. |
int |
getRank()
Returns the rank of the matrix. |
double[] |
getRow(int row)
Returns the entries in row number row as an array. |
int |
getRowDimension()
Returns the number of rows in the matrix. |
double |
getTrace()
Returns the trace of the matrix (the sum of the elements on the main diagonal). |
RealMatrix |
inverse()
Returns the inverse of this matrix. |
boolean |
isSingular()
Is this a singular matrix? |
boolean |
isSquare()
Is this a square matrix? |
void |
LUDecompose()
Computes a new LU decompostion for this matrix, storing the result for use by other methods. |
RealMatrix |
multiply(RealMatrix m)
Returns the result postmultiplying this by m . |
double[] |
operate(double[] v)
Returns the result of multiplying this by the vector v . |
RealMatrix |
preMultiply(double[] v)
Returns the 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 |
setData(double[][] inData)
Overwrites the underlying data for the matrix with a fresh copy of inData . |
void |
setDataRef(double[][] inData)
Overwrites the underlying data for the matrix with a reference to inData . |
void |
setEntry(int row,
int column,
double value)
Sets the entry in the specified row and column to the specified value. |
double[] |
solve(double[] b)
Returns the solution vector for a linear system with coefficient matrix = this and constant vector = b . |
RealMatrix |
solve(RealMatrix b)
Uses LU decomposition, performing the composition if the matrix has not been decomposed, or if there have been changes to the matrix since the last decomposition. |
RealMatrix |
subtract(RealMatrix m)
Compute this minus m . |
String |
toString()
|
RealMatrix |
transpose()
Returns the transpose of this matrix. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
public RealMatrixImpl()
public RealMatrixImpl(int rowDimension, int columnDimension)
rowDimension
- the number of rows in the new matrixcolumnDimension
- the number of columns in the new matrixpublic RealMatrixImpl(double[][] d)
data
as the underlying
data array.
The input array is copied, not referenced.
d
- data for new matrixpublic RealMatrixImpl(double[] 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 matrixMethod Detail |
public RealMatrix copy()
copy
in interface RealMatrix
public RealMatrix add(RealMatrix m) throws IllegalArgumentException
m
.
add
in interface RealMatrix
m
- matrix to be added
IllegalArgumentException
- if m is not the same size as thispublic RealMatrix subtract(RealMatrix m) throws IllegalArgumentException
m
.
subtract
in interface RealMatrix
m
- matrix to be subtracted
IllegalArgumentException
- if m is not the same size as *thispublic int getRank()
getRank
in interface RealMatrix
public RealMatrix scalarAdd(double d)
scalarAdd
in interface RealMatrix
d
- value to be added to each entry
public RealMatrix scalarMultiply(double d)
d
scalarMultiply
in interface RealMatrix
d
- value to multiply all entries by
public RealMatrix multiply(RealMatrix m) throws IllegalArgumentException
m
.
multiply
in interface RealMatrix
m
- matrix to postmultiply by
IllegalArgumentException
- if columnDimension(this) != rowDimension(m)public double[][] getData()
Makes a fresh copy of the underlying data.
getData
in interface RealMatrix
public void setData(double[][] inData)
inData
.
setData
in interface RealMatrix
inData
- 2-dimensional array of entriespublic double[][] getDataRef()
Does not make a fresh copy of the underlying data.
public void setDataRef(double[][] inData)
inData
.
Does not make a fresh copy of data
.
inData
- 2-dimensional array of entriespublic double getNorm()
RealMatrix
getNorm
in interface RealMatrix
public double[] getRow(int row) throws IllegalArgumentException
RealMatrix
row
as an array.
getRow
in interface RealMatrix
row
- the row to be fetched
IllegalArgumentException
- if row > rowDimension or row < 1public double[] getColumn(int col) throws IllegalArgumentException
RealMatrix
col
as an array.
getColumn
in interface RealMatrix
col
- column to fetch
IllegalArgumentException
- if column > columnDimension or
column < 1public double getEntry(int row, int column) throws IllegalArgumentException
RealMatrix
getEntry
in interface RealMatrix
row
- row location of entry to be fetchedcolumn
- column location of entry to be fetched
IllegalArgumentException
- if entry does not existpublic void setEntry(int row, int column, double value) throws IllegalArgumentException
RealMatrix
setEntry
in interface RealMatrix
row
- row location of entry to be setcolumn
- column location of entry to be setvalue
- value to set
IllegalArgumentException
- if entry does not existpublic RealMatrix transpose()
RealMatrix
transpose
in interface RealMatrix
public RealMatrix inverse() throws IllegalArgumentException
RealMatrix
inverse
in interface RealMatrix
IllegalArgumentException
- if this is not invertiblepublic double getDeterminant() throws IllegalArgumentException
RealMatrix
getDeterminant
in interface RealMatrix
IllegalArgumentException
- if matrix is not squarepublic boolean isSquare()
RealMatrix
isSquare
in interface RealMatrix
public boolean isSingular()
RealMatrix
isSingular
in interface RealMatrix
public int getRowDimension()
RealMatrix
getRowDimension
in interface RealMatrix
public int getColumnDimension()
RealMatrix
getColumnDimension
in interface RealMatrix
public double getTrace() throws IllegalArgumentException
RealMatrix
getTrace
in interface RealMatrix
IllegalArgumentException
- if the matrix is not squarepublic double[] operate(double[] v) throws IllegalArgumentException
RealMatrix
v
.
operate
in interface RealMatrix
v
- vector to operate on
IllegalArgumentException
- if columnDimension != v.lengthpublic RealMatrix preMultiply(double[] v) throws IllegalArgumentException
RealMatrix
v
.
preMultiply
in interface RealMatrix
v
- vector to premultiply by
IllegalArgumentException
- if rowDimension != v.lengthpublic double[] solve(double[] b) throws IllegalArgumentException
RealMatrix
b
.
solve
in interface RealMatrix
b
- constant vector
IllegalArgumentException
- if rowDimension != b.length or matrix
is singularpublic RealMatrix solve(RealMatrix b) throws IllegalArgumentException
solve
in interface RealMatrix
b
- the constant vector
IllegalArgumentException
- if this is singular or dimensions
do not match.public void LUDecompose() throws IllegalArgumentException
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.
IllegalArgumentException
- if the matrix is singularpublic String toString()
Object.toString()
protected RealMatrix getIdentity(int dimension)
dimension x dimension
identity matrix.
dimension
- dimension of identity matrix to generate
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |