- •Индивидуальное задание на производственную практику (научно-исследовательскую работу)
- •Введение
- •Задание 1. Простейшие вычисления в Java
- •Задание 2. Работа с массивами. Векторы-столбцы и векторы-строки
- •Задание 3. Работа с массивами
- •Задание 4. Двумерные массивы и матрицы
- •Задание 5. Блочные матрицы
- •Задание 6. Визуализация матриц и поэлементные операции над ними
- •Задание 7. Графики, диаграммы и гистограммы
- •Задание 8. М-файлы. Численные методы и программирование
- •Задание 9. Программирование. Операторы цикла
- •Задание на выполнение этапа №2. Исследование метода Монте-Карло для вычисления площадей плоских фигур
- •S(n) – полученая площадь методом Монте-Карло
- •Список использованных источников
Задание 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}}; 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:"); 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.
Рисунок 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"); } 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
Рисунок 25 – Результат сохранения матрицы M
