Initial revision
commit
3958af6e1f
|
@ -0,0 +1,24 @@
|
||||||
|
// Andrew Coleman
|
||||||
|
// Matrices.java
|
||||||
|
// demonstrates the use of the Matrix class
|
||||||
|
|
||||||
|
import Matrix;
|
||||||
|
|
||||||
|
public class Matrices {
|
||||||
|
public static void main (String[] args) {
|
||||||
|
int[][] matrix1 = {{1, 1, 1}, {5, 6, 4}, {0, 2, 3}};
|
||||||
|
int[][] matrix2 = {{0, 0, 0}, {4, 9, 2}, {1, -2, 6}};
|
||||||
|
Matrix m1 = new Matrix(matrix1);
|
||||||
|
Matrix m2 = new Matrix(matrix2);
|
||||||
|
System.out.println(m1 + "\n");
|
||||||
|
System.out.println(m2 + "\n");
|
||||||
|
System.out.println("Addition:");
|
||||||
|
System.out.println(m1.add(m2)+"\n");
|
||||||
|
System.out.println("Subtraction:");
|
||||||
|
System.out.println(m1.subtract(m2)+"\n");
|
||||||
|
System.out.println("Multiplication:");
|
||||||
|
System.out.println(m1.multiply(m2)+"\n");
|
||||||
|
System.out.println("scalar multiplication (m1 * 2):");
|
||||||
|
System.out.println(m1.scalar_multiply(2)+"\n");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,129 @@
|
||||||
|
// Andrew Coleman
|
||||||
|
// Matrix.java
|
||||||
|
// Class for using a matrix of integers
|
||||||
|
// and a set of algorithms to perform on the matrix
|
||||||
|
|
||||||
|
public class Matrix {
|
||||||
|
private int rows = 0, cols = 0;
|
||||||
|
private int[][] matrix;
|
||||||
|
|
||||||
|
// the standard constructor
|
||||||
|
public Matrix (int r, int c) {
|
||||||
|
rows = r;cols = c;
|
||||||
|
matrix = new int[rows][cols];
|
||||||
|
}
|
||||||
|
|
||||||
|
// constructor to use with an array
|
||||||
|
public Matrix (int[][] array) {
|
||||||
|
rows = array.length;
|
||||||
|
cols = array[0].length;
|
||||||
|
matrix = new int[rows][cols];
|
||||||
|
for (int r = 0; r < rows; r++)
|
||||||
|
for (int c = 0; c < cols; c++)
|
||||||
|
matrix[r][c] = array[r][c];
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRows () {
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getColumns () {
|
||||||
|
return cols;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getElement (int r, int c) {
|
||||||
|
if (r <= rows && c <= cols)
|
||||||
|
return matrix[r][c];
|
||||||
|
return -999;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Matrix setElement (int r, int c, int value) {
|
||||||
|
if (r <= rows && c <= cols)
|
||||||
|
matrix[r][c] = value;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// adds the totals in a row
|
||||||
|
public int addRow (int r) {
|
||||||
|
int result = 0;
|
||||||
|
for (int i = 0; i < rows; i++)
|
||||||
|
result += matrix[r][i];
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// adds the totals in a column
|
||||||
|
public int addColumn (int c) {
|
||||||
|
int result = 0;
|
||||||
|
for (int i = 0; i < cols; i++)
|
||||||
|
result += matrix[i][c];
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// adds two matrices
|
||||||
|
public Matrix add (Matrix m2) {
|
||||||
|
if (m2.getRows() == rows && m2.getColumns() == cols) {
|
||||||
|
int[][] result = new int[rows][cols];
|
||||||
|
for (int r = 0; r < rows; r++)
|
||||||
|
for (int c = 0; c < cols; c++)
|
||||||
|
result[r][c] = this.getElement(r, c) + m2.getElement(r, c);
|
||||||
|
return new Matrix(result);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// subtracts two matrices
|
||||||
|
public Matrix subtract (Matrix m2) {
|
||||||
|
if (m2.getRows() == rows && m2.getColumns() == cols) {
|
||||||
|
int[][] result = new int[rows][cols];
|
||||||
|
for (int r = 0; r < rows; r++)
|
||||||
|
for (int c = 0; c < cols; c++)
|
||||||
|
result[r][c] = this.getElement(r, c) - m2.getElement(r, c);
|
||||||
|
return new Matrix(result);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// multiplies two matricies
|
||||||
|
public Matrix multiply (Matrix m2) {
|
||||||
|
if (m2.getRows() == cols && rows == m2.getColumns() ) {
|
||||||
|
int[][] result = new int[rows][m2.getColumns()];
|
||||||
|
for (int r = 0; r < rows; r++)
|
||||||
|
for (int c = 0; c < m2.getColumns(); c++)
|
||||||
|
result[r][c] = this.addRow(r) + m2.addColumn(c);
|
||||||
|
return new Matrix(result);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
// multiplies the current matrix by a scalar value
|
||||||
|
public Matrix scalar_multiply (int value) {
|
||||||
|
int[][] result = new int[rows][cols];
|
||||||
|
for (int r = 0; r < rows; r++)
|
||||||
|
for (int c = 0; c < cols; c++)
|
||||||
|
result[r][c] = matrix[r][c] * value;
|
||||||
|
return new Matrix(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
// checks equality on another matrix
|
||||||
|
public boolean equals(Matrix m2) {
|
||||||
|
boolean result = true;
|
||||||
|
if (rows == m2.getRows() && cols == m2.getColumns() )
|
||||||
|
for (int r = 0; r < rows; r++)
|
||||||
|
for (int c = 0; c < cols; c++)
|
||||||
|
if (matrix[r][c] != m2.getElement(r, c) && result)
|
||||||
|
result = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// overridden toString method to give you a very pretty output
|
||||||
|
public String toString() {
|
||||||
|
String result = "";
|
||||||
|
for (int r = 0; r < rows; r++) {
|
||||||
|
result += " [ ";
|
||||||
|
for (int c = 0; c < cols; c++)
|
||||||
|
result += (matrix[r][c] + " ");
|
||||||
|
result += "]\n";
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue