
Tyutterin_Yakov_Z1411_with_1_and_2
.pdf
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