Модуль 1. Вариант 4
This commit is contained in:
parent
7e38b7adae
commit
aa490a1387
@ -53,7 +53,7 @@ javadoc.splitindex=true
|
|||||||
javadoc.use=true
|
javadoc.use=true
|
||||||
javadoc.version=false
|
javadoc.version=false
|
||||||
javadoc.windowtitle=
|
javadoc.windowtitle=
|
||||||
main.class=tse.Main
|
main.class=module1.variant4.Task_2
|
||||||
manifest.file=manifest.mf
|
manifest.file=manifest.mf
|
||||||
meta.inf.dir=${src.dir}/META-INF
|
meta.inf.dir=${src.dir}/META-INF
|
||||||
mkdist.disabled=false
|
mkdist.disabled=false
|
||||||
|
98
src/module1/variant4/Matrix.java
Normal file
98
src/module1/variant4/Matrix.java
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
package module1.variant4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class Matrix {
|
||||||
|
|
||||||
|
protected int[][] matrix;
|
||||||
|
|
||||||
|
public Matrix(int row, int columns) {
|
||||||
|
if ( (row < 1) || (columns < 1) ) {
|
||||||
|
throw new RuntimeException("Размер матрицы должен быть больше 0");
|
||||||
|
}
|
||||||
|
matrix = new int[row][columns];
|
||||||
|
}
|
||||||
|
|
||||||
|
public Matrix(int[][] matrix) {
|
||||||
|
this.matrix = matrix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRowSize() {
|
||||||
|
return matrix.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getColumnSize() {
|
||||||
|
return matrix[0].length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[][] getMatrix() {
|
||||||
|
return matrix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMatrix(int[][] matrix) {
|
||||||
|
this.matrix = matrix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRow(int row, int[] vector) {
|
||||||
|
this.matrix[row] = vector;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCell(int row, int column, int value) {
|
||||||
|
this.matrix[row][column] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Matrix multiply(Matrix other) {
|
||||||
|
int[][] matrixA = matrix;
|
||||||
|
int[][] matrixB = other.matrix;
|
||||||
|
|
||||||
|
int rowsA = matrixA.length;
|
||||||
|
int columnsA = matrixA[0].length;
|
||||||
|
int columnsB = matrixB.length;
|
||||||
|
if (columnsB != columnsA) {
|
||||||
|
throw new RuntimeException("Размеры матриц не совпадают");
|
||||||
|
}
|
||||||
|
|
||||||
|
int[][] matrixC = new int[rowsA][columnsB];
|
||||||
|
for (int i = 0; i < rowsA; i++) {
|
||||||
|
for (int j = 0; j < columnsB; j++) {
|
||||||
|
for (int k = 0; k < columnsA; k++) {
|
||||||
|
matrixC[i][j] += matrixA[i][k] * matrixB[k][j];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Matrix(matrixC);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("Матрица\n");
|
||||||
|
for (int i = 0; i < matrix.length; i++) {
|
||||||
|
for (int j = 0; j < matrix[0].length; j++) {
|
||||||
|
sb.append(matrix[i][j]).append(' ');
|
||||||
|
}
|
||||||
|
sb.append("\n");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object clone() throws CloneNotSupportedException {
|
||||||
|
return super.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
return super.equals(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return super.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
47
src/module1/variant4/Task_2.java
Normal file
47
src/module1/variant4/Task_2.java
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package module1.variant4;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class Task_2 {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Random rnd = new Random();
|
||||||
|
|
||||||
|
Matrix mt1 = new Matrix(1, 3);
|
||||||
|
for (int i = 0; i < mt1.getColumnSize(); i++) {
|
||||||
|
mt1.setCell(0, i, rnd.nextInt(10));
|
||||||
|
}
|
||||||
|
|
||||||
|
Matrix mt2 = new Matrix(3, 3);
|
||||||
|
for (int i = 0; i < mt2.getRowSize(); i++) {
|
||||||
|
for (int j = 0; j < mt2.getColumnSize(); j++) {
|
||||||
|
mt2.setCell(i, j, rnd.nextInt(10));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector vector = new Vector(3);
|
||||||
|
for (int i = 0; i < vector.getVectorSize(); i++) {
|
||||||
|
vector.setCell(i, rnd.nextInt(10));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ArrayList<Matrix> list = new ArrayList<>();
|
||||||
|
list.add(mt1);
|
||||||
|
list.add(mt2);
|
||||||
|
list.add(vector);
|
||||||
|
|
||||||
|
for (Matrix matrix : list) {
|
||||||
|
System.out.println(matrix.toString());
|
||||||
|
}
|
||||||
|
System.out.println("AxB= " + mt1.multiply(mt2).toString());
|
||||||
|
System.out.println("V*A= " + vector.getMultiplyMatrixAndVector(mt1).toString());
|
||||||
|
System.out.println("V*B= " + vector.getMultiplyMatrixAndVector(mt2).toString());
|
||||||
|
System.out.println("V*V= " + vector.getVectorScalarMultiply(vector));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
73
src/module1/variant4/Vector.java
Normal file
73
src/module1/variant4/Vector.java
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
package module1.variant4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class Vector extends Matrix {
|
||||||
|
|
||||||
|
public Vector(int size) {
|
||||||
|
super(new int[1][size]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector(int[] vector) {
|
||||||
|
super(new int[][] {
|
||||||
|
vector
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] getVector() {
|
||||||
|
return matrix[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getVectorSize() {
|
||||||
|
return matrix[0].length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCell(int column, int value) {
|
||||||
|
super.setCell(0, column, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector getMultiplyMatrixAndVector(Matrix matrix) {
|
||||||
|
int[][] matrixA = matrix.getMatrix();
|
||||||
|
int rowsA = matrixA.length;
|
||||||
|
int columnsA = matrixA[0].length;
|
||||||
|
|
||||||
|
int[] vector = getVector();
|
||||||
|
|
||||||
|
if (vector.length != columnsA) {
|
||||||
|
throw new RuntimeException("Размер матрицы и длина вектора не совпадают");
|
||||||
|
}
|
||||||
|
int[] result = new int[rowsA];
|
||||||
|
for (int i = 0; i < rowsA; i++) {
|
||||||
|
for (int j = 0; j < columnsA; j++) {
|
||||||
|
result[i] += (matrixA[i][j] * vector[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new Vector(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getVectorScalarMultiply(Vector other) {
|
||||||
|
int[] vectorA = getVector();
|
||||||
|
int[] vectorB = other.getVector();
|
||||||
|
|
||||||
|
int result = 0;
|
||||||
|
for (int i = 0; i < vectorA.length; i++) {
|
||||||
|
result += vectorA[i] * vectorB[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
sb.append("Вектор\n");
|
||||||
|
for (int j = 0; j < matrix[0].length; j++) {
|
||||||
|
sb.append(matrix[0][j]).append(' ');
|
||||||
|
}
|
||||||
|
sb.append("\n");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user