- My matrix class java
- Matrix
- Matrix
- Matrix
- Matrix
- Matrix
- constructWithCopy
- copy
- clone
- getArray
- getArrayCopy
- getColumnPackedCopy
- getRowPackedCopy
- getRowDimension
- getColumnDimension
- get
- getMatrix
- getMatrix
- getMatrix
- getMatrix
- set
- setMatrix
- setMatrix
- setMatrix
- setMatrix
- transpose
- norm1
- norm2
- normInf
- normF
- uminus
- plus
- plusEquals
- minus
- minusEquals
- arrayTimes
- arrayTimesEquals
- arrayRightDivide
- arrayRightDivideEquals
- arrayLeftDivide
- arrayLeftDivideEquals
- times
- timesEquals
- times
- lu
- qr
- chol
- svd
- eig
- solve
- solveTranspose
- inverse
- det
- rank
- cond
- trace
- random
- identity
- read
My matrix class java
The Java Matrix Class provides the fundamental operations of numerical linear algebra. Various constructors create Matrices from two dimensional arrays of double precision floating point numbers. Various «gets» and «sets» provide access to submatrices and matrix elements. Several methods implement basic matrix arithmetic, including matrix addition and multiplication, matrix norms, and element-by-element array operations. Methods for reading and printing matrices are also included. All the operations in this version of the Matrix Class involve real matrices. Complex matrices may be handled in a future version.
Five fundamental matrix decompositions, which consist of pairs or triples of matrices, permutation vectors, and the like, produce results in five decomposition classes. These decompositions are accessed by the Matrix class to compute solutions of simultaneous linear equations, determinants, inverses and other matrix functions. The five decompositions are:
- Cholesky Decomposition of symmetric, positive definite matrices.
- LU Decomposition of rectangular matrices.
- QR Decomposition of rectangular matrices.
- Singular Value Decomposition of rectangular matrices.
- Eigenvalue Decomposition of both symmetric and nonsymmetric square matrices.
Solve a linear system A x = b and compute the residual norm, ||b — A x||.
double[][] vals = ,,>; Matrix A = new Matrix(vals); Matrix b = Matrix.random(3,1); Matrix x = A.solve(b); Matrix r = A.times(x).minus(b); double rnorm = r.normInf();
Constructor Summary | |
---|---|
Matrix (double[][] A) Construct a matrix from a 2-D array. | |
Matrix (double[][] A, int m, int n) Construct a matrix quickly without checking arguments. | |
Matrix (double[] vals, int m) Construct a matrix from a one-dimensional packed array | |
Matrix (int m, int n) Construct an m-by-n matrix of zeros. | |
Matrix (int m, int n, double s) Construct an m-by-n constant matrix. |
Method Summary | |
---|---|
Matrix | arrayLeftDivide (Matrix B) Element-by-element left division, C = A.\B |
Matrix | arrayLeftDivideEquals (Matrix B) Element-by-element left division in place, A = A.\B |
Matrix | arrayRightDivide (Matrix B) Element-by-element right division, C = A./B |
Matrix | arrayRightDivideEquals (Matrix B) Element-by-element right division in place, A = A./B |
Matrix | arrayTimes (Matrix B) Element-by-element multiplication, C = A.*B |
Matrix | arrayTimesEquals (Matrix B) Element-by-element multiplication in place, A = A.*B |
CholeskyDecomposition | chol () Cholesky Decomposition |
Object | clone () Clone the Matrix object. |
double | cond () Matrix condition (2 norm) |
static Matrix | constructWithCopy (double[][] A) Construct a matrix from a copy of a 2-D array. |
Matrix | copy () Make a deep copy of a matrix |
double | det () Matrix determinant |
EigenvalueDecomposition | eig () Eigenvalue Decomposition |
double | get (int i, int j) Get a single element. |
double[][] | getArray () Access the internal two-dimensional array. |
double[][] | getArrayCopy () Copy the internal two-dimensional array. |
int | getColumnDimension () Get column dimension. |
double[] | getColumnPackedCopy () Make a one-dimensional column packed copy of the internal array. |
Matrix | getMatrix (int[] r, int[] c) Get a submatrix. |
Matrix | getMatrix (int[] r, int j0, int j1) Get a submatrix. |
Matrix | getMatrix (int i0, int i1, int[] c) Get a submatrix. |
Matrix | getMatrix (int i0, int i1, int j0, int j1) Get a submatrix. |
int | getRowDimension () Get row dimension. |
double[] | getRowPackedCopy () Make a one-dimensional row packed copy of the internal array. |
static Matrix | identity (int m, int n) Generate identity matrix |
Matrix | inverse () Matrix inverse or pseudoinverse |
LUDecomposition | lu () LU Decomposition |
Matrix | minus (Matrix B) C = A — B |
Matrix | minusEquals (Matrix B) A = A — B |
double | norm1 () One norm |
double | norm2 () Two norm |
double | normF () Frobenius norm |
double | normInf () Infinity norm |
Matrix | plus (Matrix B) C = A + B |
Matrix | plusEquals (Matrix B) A = A + B |
void | print (int w, int d) Print the matrix to stdout. |
void | print (NumberFormat format, int width) Print the matrix to stdout. |
void | print (PrintWriter output, int w, int d) Print the matrix to the output stream. |
void | print (PrintWriter output, NumberFormat format, int width) Print the matrix to the output stream. |
QRDecomposition | qr () QR Decomposition |
static Matrix | random (int m, int n) Generate matrix with random elements |
int | rank () Matrix rank |
static Matrix | read (BufferedReader input) Read a matrix from a stream. |
void | set (int i, int j, double s) Set a single element. |
void | setMatrix (int[] r, int[] c, Matrix X) Set a submatrix. |
void | setMatrix (int[] r, int j0, int j1, Matrix X) Set a submatrix. |
void | setMatrix (int i0, int i1, int[] c, Matrix X) Set a submatrix. |
void | setMatrix (int i0, int i1, int j0, int j1, Matrix X) Set a submatrix. |
Matrix | solve (Matrix B) Solve A*X = B |
Matrix | solveTranspose (Matrix B) Solve X*A = B, which is also A’*X’ = B’ |
SingularValueDecomposition | svd () Singular Value Decomposition |
Matrix | times (double s) Multiply a matrix by a scalar, C = s*A |
Matrix | times (Matrix B) Linear algebraic matrix multiplication, A * B |
Matrix | timesEquals (double s) Multiply a matrix by a scalar in place, A = s*A |
double | trace () Matrix trace. |
Matrix | transpose () Matrix transpose. |
Matrix | uminus () Unary minus |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Matrix
Parameters: m — Number of rows. n — Number of colums.
Matrix
public Matrix(int m, int n, double s)
Parameters: m — Number of rows. n — Number of colums. s — Fill the matrix with this scalar value.
Matrix
Parameters: A — Two-dimensional array of doubles. Throws: IllegalArgumentException — All rows must have the same length See Also: constructWithCopy(double[][])
Matrix
public Matrix(double[][] A, int m, int n)
Parameters: A — Two-dimensional array of doubles. m — Number of rows. n — Number of colums.
Matrix
public Matrix(double[] vals, int m)
Parameters: vals — One-dimensional array of doubles, packed by columns (ala Fortran). m — Number of rows. Throws: IllegalArgumentException — Array length must be a multiple of m.
Method Detail |
---|
constructWithCopy
public static Matrix constructWithCopy(double[][] A)
Parameters: A — Two-dimensional array of doubles. Throws: IllegalArgumentException — All rows must have the same length
copy
clone
getArray
Returns: Pointer to the two-dimensional array of matrix elements.
getArrayCopy
public double[][] getArrayCopy()
Returns: Two-dimensional array copy of matrix elements.
getColumnPackedCopy
public double[] getColumnPackedCopy()
Returns: Matrix elements packed in a one-dimensional array by columns.
getRowPackedCopy
public double[] getRowPackedCopy()
Returns: Matrix elements packed in a one-dimensional array by rows.
getRowDimension
public int getRowDimension()
Returns: m, the number of rows.
getColumnDimension
public int getColumnDimension()
Returns: n, the number of columns.
get
public double get(int i, int j)
Parameters: i — Row index. j — Column index. Returns: A(i,j) Throws: ArrayIndexOutOfBoundsException
getMatrix
public Matrix getMatrix(int i0, int i1, int j0, int j1)
Parameters: i0 — Initial row index i1 — Final row index j0 — Initial column index j1 — Final column index Returns: A(i0:i1,j0:j1) Throws: ArrayIndexOutOfBoundsException — Submatrix indices
getMatrix
Parameters: r — Array of row indices. c — Array of column indices. Returns: A(r(:),c(:)) Throws: ArrayIndexOutOfBoundsException — Submatrix indices
getMatrix
public Matrix getMatrix(int i0, int i1, int[] c)
Parameters: i0 — Initial row index i1 — Final row index c — Array of column indices. Returns: A(i0:i1,c(:)) Throws: ArrayIndexOutOfBoundsException — Submatrix indices
getMatrix
public Matrix getMatrix(int[] r, int j0, int j1)
Parameters: r — Array of row indices. j0 — Initial column index j1 — Final column index Returns: A(r(:),j0:j1) Throws: ArrayIndexOutOfBoundsException — Submatrix indices
set
public void set(int i, int j, double s)
Parameters: i — Row index. j — Column index. s — A(i,j). Throws: ArrayIndexOutOfBoundsException
setMatrix
Parameters: i0 — Initial row index i1 — Final row index j0 — Initial column index j1 — Final column index X — A(i0:i1,j0:j1) Throws: ArrayIndexOutOfBoundsException — Submatrix indices
setMatrix
Parameters: r — Array of row indices. c — Array of column indices. X — A(r(:),c(:)) Throws: ArrayIndexOutOfBoundsException — Submatrix indices
setMatrix
Parameters: r — Array of row indices. j0 — Initial column index j1 — Final column index X — A(r(:),j0:j1) Throws: ArrayIndexOutOfBoundsException — Submatrix indices
setMatrix
Parameters: i0 — Initial row index i1 — Final row index c — Array of column indices. X — A(i0:i1,c(:)) Throws: ArrayIndexOutOfBoundsException — Submatrix indices
transpose
norm1
Returns: maximum column sum.
norm2
Returns: maximum singular value.
normInf
normF
Returns: sqrt of sum of squares of all elements.
uminus
plus
Parameters: B — another matrix Returns: A + B
plusEquals
Parameters: B — another matrix Returns: A + B
minus
Parameters: B — another matrix Returns: A — B
minusEquals
Parameters: B — another matrix Returns: A — B
arrayTimes
Parameters: B — another matrix Returns: A.*B
arrayTimesEquals
Parameters: B — another matrix Returns: A.*B
arrayRightDivide
Parameters: B — another matrix Returns: A./B
arrayRightDivideEquals
public Matrix arrayRightDivideEquals(Matrix B)
Parameters: B — another matrix Returns: A./B
arrayLeftDivide
Parameters: B — another matrix Returns: A.\B
arrayLeftDivideEquals
public Matrix arrayLeftDivideEquals(Matrix B)
Parameters: B — another matrix Returns: A.\B
times
Parameters: s — scalar Returns: s*A
timesEquals
Parameters: s — scalar Returns: replace A by s*A
times
Parameters: B — another matrix Returns: Matrix product, A * B Throws: IllegalArgumentException — Matrix inner dimensions must agree.
lu
Returns: LUDecomposition See Also: LUDecomposition
qr
Returns: QRDecomposition See Also: QRDecomposition
chol
Returns: CholeskyDecomposition See Also: CholeskyDecomposition
svd
Returns: SingularValueDecomposition See Also: SingularValueDecomposition
eig
Returns: EigenvalueDecomposition See Also: EigenvalueDecomposition
solve
Parameters: B — right hand side Returns: solution if A is square, least squares solution otherwise
solveTranspose
Parameters: B — right hand side Returns: solution if A is square, least squares solution otherwise.
inverse
Returns: inverse(A) if A is square, pseudoinverse otherwise.
det
rank
Returns: effective numerical rank, obtained from SVD.
cond
Returns: ratio of largest to smallest singular value.
trace
Returns: sum of the diagonal elements.
random
Parameters: m — Number of rows. n — Number of colums. Returns: An m-by-n matrix with uniformly distributed random elements.
identity
Parameters: m — Number of rows. n — Number of colums. Returns: An m-by-n matrix with ones on the diagonal and zeros elsewhere.
public void print(int w, int d)
Parameters: w — Column width. d — Number of digits after the decimal.
Print the matrix to the output stream. Line the elements up in columns with a Fortran-like ‘Fw.d’ style format.
Parameters: output — Output stream. w — Column width. d — Number of digits after the decimal.
Print the matrix to stdout. Line the elements up in columns. Use the format object, and right justify within columns of width characters. Note that is the matrix is to be read back in, you probably will want to use a NumberFormat that is set to US Locale.
Parameters: format — A Formatting object for individual elements. width — Field width for each column. See Also: DecimalFormat.setDecimalFormatSymbols(java.text.DecimalFormatSymbols)
public void print(PrintWriter output, NumberFormat format, int width)
Print the matrix to the output stream. Line the elements up in columns. Use the format object, and right justify within columns of width characters. Note that is the matrix is to be read back in, you probably will want to use a NumberFormat that is set to US Locale.
Parameters: output — the output stream. format — A formatting object to format the matrix elements width — Column width. See Also: DecimalFormat.setDecimalFormatSymbols(java.text.DecimalFormatSymbols)
read
public static Matrix read(BufferedReader input) throws IOException
Read a matrix from a stream. The format is the same the print method, so printed matrices can be read back in (provided they were printed using US Locale). Elements are separated by whitespace, all the elements for each row appear on a single line, the last row is followed by a blank line.
Parameters: input — the input stream. Throws: IOException
| |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |