Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Tyutterin_Yakov_Z1411_with_1_and_2

.pdf
Скачиваний:
0
Добавлен:
07.01.2025
Размер:
5.51 Mб
Скачать

21

Листинг программы представлен ниже import java.util.Arrays;

public class Main {

public static void main(String[] args) { int[][] c = {{9, 3, -5}, {-3, -5, -1}};

int[][] b = {{5, 3, -7}, {4, 3, -9}, {-6, 2, 9}}; final int[][] result = multiply(c, b); System.out.println(Arrays.deepToString(result));

}

private static int[][] multiply(final int[][] matrixA, final int[][] matrixB) {

final var matrixM = new int[matrixA.length][matrixB[0].length];

for (var i = 0; i < matrixM.length; i++) {

for (var j = 0; j < matrixM[0].length; j++) { matrixM[i][j] = 0;

for (var k = 0; k < matrixA[0].length; k++) { matrixM[i][j] += matrixA[i][k] * matrixB[k][j];

}

}

}

return matrixM;

}

}

Результат вычислений представлен на рисунке 17.

Рисунок 17 – Результат вычислений

Листинг программы представлен ниже

import java.util.Arrays;

public class Main {

public static void main(String[] args) { int[][] c = {{9, 3, -5}, {-3, -5, -1}};

int[][] b = {{5, 3, -7}, {4, 3, -9}, {-6, 2, 9}}; final int[][] result = multiply(c, b);

for (int[] line : result) {

for (int j = 0; j < line.length; j++) { line[j] *= 2;

}

}

22

System.out.println(Arrays.deepToString(result));

}

private static int[][] multiply(final int[][] matrixA, final int[][] matrixB) {

final var matrixM = new int[matrixA.length][matrixB[0].length];

for (var i = 0; i < matrixM.length; i++) {

for (var j = 0; j < matrixM[0].length; j++) { matrixM[i][j] = 0;

for (var k = 0; k < matrixA[0].length; k++) { matrixM[i][j] += matrixA[i][k] * matrixB[k][j];

}

}

}

return matrixM;

}

}

Результат вычислений представлен на рисунке 18.

Рисунок 18 – Результат вычислений

Задание 4.2:

В комментариях к коду описано то, почему задание некорректно. В результате будем вычислять значение выражения: (A+C) * B^2 + (A + C)

import java.util.Arrays;

public class Main {

public static void main(String[] args) { int[][] a = {{9, -7, -4}, {1, 9, 0}};

int[][] b = {{5, 3, -7}, {4, 3, -9}, {-6, 2, 9}}; int[][] c = {{9, 3, -5}, {-3, -5, -1}};

//A + C

int[][] sumAC = sum(a, c); int[][] powB = multiply(b, b);

//В качестве T из уравнения в задании возьмем 2

//(A + C)^2, но полученную матрицу - нельзя перемножить(возвести в степень), так как количество строк не совпадает

//с количеством столбцов

int[][] result = sum(sumAC, multiply(sumAC, powB)); System.out.println(Arrays.deepToString(result));

}

private static int[][] sum(final int[][] matrixA, final int[][] matrixB)

{

int[][] result = new int[matrixA.length][matrixB[0].length];

23

for (int i = 0; i < matrixA.length; i++) { int[] lineA = matrixA[i];

int[] lineB = matrixB[i];

int[] resultLine = new int[lineA.length]; for (int j = 0; j < lineB.length; j++) { resultLine[j] = lineA[j] + lineB[j];

}

result[i] = resultLine;

}

return result;

}

private static int[][] multiply(final int[][] matrixA, final int[][] matrixB) {

if (matrixA[0].length != matrixB.length) { System.err.println("Эти матрицы нельзя перемножить"); return null;

}

final var matrixM = new int[matrixA.length][matrixB[0].length]; for (var i = 0; i < matrixM.length; i++) {

for (var j = 0; j < matrixM[0].length; j++) { matrixM[i][j] = 0;

for (var k = 0; k < matrixA[0].length; k++) { matrixM[i][j] += matrixA[i][k] * matrixB[k][j];

}

}

}

return matrixM;

}

}

Результат вычислений представлен на рисунке 19.

Рисунок 19 – Результат вычислений

Задание 4.3:

Листинг программы представлен ниже import java.util.Arrays;

public class Main {

public static void main(String[] args) { int[] vector1 = {5, 1, -3};

int[][] matrix = {{9, 3, 1}, {-7, 8, -1}, {8, 6, -6}}; int[] vector2 = {-2, 3, 1};

System.out.println(Arrays.deepToString(multiply(multiply(matrix, vector1), vector2)));

}

24

private static int[][] multiply(int[][] matrix, int[] vector) { for (int[] line : matrix) {

for (var j = 0; j < matrix[0].length; j++) { line[j] *= vector[j];

}

}

return matrix;

}

}

Результат вычислений представлен на рисунке 20.

Рисунок 20 – Результаты вычислений

Задание 4.4:

Результат вычисления представлен на рисунке 21.

Рисунок 21 – Результаты вычислений

25

Задание 5. Блочные матрицы

Задание 5.1:

Листинг программы, решающей поставленную задачу – представлен ниже.

import java.util.Arrays;

public class Main

{

public static

void main(String[] args) {

int[][] a

= {{9, 3}, {7, 8}};

int[][] b

= {{4, 1}, {2, 3}};

int[][] c

= {{1, 1}, {1, 1}};

int[][] d

= {{2, 2}, {2, 2}};

 

 

26

int[][] result = new int[4][4];

insert(result, a, 0, 0); insert(result, b, 0, 2); insert(result, c, 2, 0); insert(result, d, 2, 2);

for (int[] ints : result) { System.out.println(Arrays.toString(ints));

}

}

private static void insert(int [][] result, int[][] matrix, int line, int col) {

int i = 0;

int maxLine = line + matrix.length; int maxCol = col + matrix.length; for (; line < maxLine; line++) {

int j = 0;

for (int temp = col; temp < maxCol; temp++) { result[line][temp] = matrix[i][j++];

}

i++;

}

}

}

Результат вычисления представлен на рисунке 22.

Рисунок 22 – Результат вычислений

б-в)

Листинг программы, решающей поставленную задачу – представлен ниже.

import java.util.Arrays; public class Main {

public static void main(String[] args) { double[][] a = {{9, 3}, {7, 8}}; double[][] b = {{4, 1}, {2, 3}}; double[][] c = {{1, 1}, {1, 1}}; double[][] d = {{2, 2}, {2, 2}}; double[][] k = new double[4][4]; insert(k, a, 0, 0);

insert(k, b, 0, 2); insert(k, c, 2, 0); insert(k, d, 2, 2);

printMatrix(k, "Матрица K:");

27

double[][] s = {{5, 9}, {1, 2}}; double[][] a1 = {{1}, {5}}; double[][] b1 = {{-4, 7}}; double[][] c1 = {{2.1}}; double[][] m = new double[3][3]; insert(m, s, 0, 0);

insert(m, a1, 0, 2); insert(m, b1, 2, 0); insert(m, c1, 2, 2);

printMatrix(m, "Матрица M:");

printMatrix(getMatrix(k, 1, 0, 3, 2), "Первый промежуток: "); printMatrix(getMatrix(k, 2, 2, 4, 4), "Второй промежуток: "); printMatrix(getMatrix(m, 2, 0, 3, 3), "3-я строка из матрицы M: ");

}

private static void insert(double[][] result, double[][] matrix, int line, int col) {

int i = 0;

int maxLine = line + matrix.length; int maxCol = col + matrix[0].length; for (; line < maxLine; line++) {

int j = 0;

for (int temp = col; temp < maxCol; temp++) { result[line][temp] = matrix[i][j++];

}

i++;

}

}

private static double[][] getMatrix(double[][] matrix, int line, int col, int maxLine, int maxCol) {

double[][] result = new double[maxLine - line][maxCol - col]; for (int i = 0; line < maxLine; line++, i++) {

for (int j = 0, temp = col; temp < maxCol; temp++, j++) { result[i][j] = matrix[line][temp];

}

}

return result;

}

private static void printMatrix(double[][] m, String message) { System.out.println(message);

for (double[] line : m) { System.out.println(Arrays.toString(line));

}

}

}

Результат вычисления представлен на рисунке 23.

28

Рисунок 23 – Результат вычислений

Задание 5.4:

Листинг программы, решающей поставленную задачу – представлен ниже.

import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException;

public class Main {

public static void main(String[] args) { int[][] m = {

{8, 0, 0, 0, 0, 6, 6, 6, 6, 6}, {0, 8, 0, 0, 0, 6, 6, 6, 6, 6}, {0, 0, 8, 0, 0, 6, 6, 6, 6, 6}, {0, 0, 0, 8, 0, 6, 6, 6, 6, 6}, {0, 0, 0, 0, 8, 6, 6, 6, 6, 6}, {3, 3, 3, 3, 3, -2, 0, 0, 0, 0}, {3, 3, 3, 3, 3, 0, -2, 0, 0, 0}, {3, 3, 3, 3, 3, 0, 0, -2, 0, 0}, {3, 3, 3, 3, 3, 0, 0, 0, -2, 0}, {3, 3, 3, 3, 3, 0, 0, 0, 0, -2}

};

writeToFile(m, "matrixM.txt");

int[][] g = {

{2, 1, 0, 0, 0, 0, 0}, {1, 2, 1, 0, 0, 0, 0}, {0, 1, 2, 1, 0, 0, 0}, {0, 0, 1, 2, 1, 0, 0}, {0, 0, 0, 1, 2, 1, 0}, {0, 0, 0, 0, 1, 2, 1}, {0, 0, 0, 0, 0, 1, 2}

};

writeToFile(g, "matrixG.txt");

}

29

private static void writeToFile(int[][] matrix, String fileName) { try(BufferedWriter writer = new BufferedWriter(new

FileWriter(fileName))) {

for (final int[] line : matrix) { StringBuilder sb = new StringBuilder(); for (int i : line) {

sb.append(i).append("\t");

}

writer.write(sb.toString());

writer.newLine();

writer.flush();

}

} catch (IOException ex) {

throw new RuntimeException(ex);

}

}

}

Результат вычисления представлен на рисунках 24-26.

Рисунок 24 – Файлы, куда происходит сохранение

Рисунок 25 – Результат сохранения матрицы G

30

Рисунок 25 – Результат сохранения матрицы M

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]