
- •Индивидуальное задание на производственную практику (научно-исследовательскую работу)
- •Введение
- •Задание 1. Простейшие вычисления в Java
- •Задание 2. Работа с массивами. Векторы-столбцы и векторы-строки
- •Задание 3. Работа с массивами
- •Задание 4. Двумерные массивы и матрицы
- •Задание 5. Блочные матрицы
- •Задание 6. Визуализация матриц и поэлементные операции над ними
- •Задание 7. Графики, диаграммы и гистограммы
- •Задание 8. М-файлы. Численные методы и программирование
- •Задание 9. Программирование. Операторы цикла
- •Задание на выполнение этапа №2. Исследование метода Монте-Карло для вычисления площадей плоских фигур
- •S(n) – полученая площадь методом Монте-Карло
- •Список использованных источников
Задание 6. Визуализация матриц и поэлементные операции над ними
Задание 6.1:
Листинг программы представлен ниже
import java.util.Arrays; public class Main { public static void main(String[] args) { int[][] m = { {7, -4, -3}, {3, -1, 0}, {4, -6, 5}, }; print(m); for (int i = 0; i < m.length; i++) { int[] line = m[i]; int sumLine = 0; for (int k : line) { sumLine += k; } System.out.println("Сумма строки " + (i + 1) + ": " + sumLine); } for (int i = 0; i < m.length; i++) { int sumColumn = 0; for (int[] ints : m) { sumColumn += ints[i]; } System.out.println("Сумма солбца " + (i + 1) + ": " + sumColumn); } } private static void print(int[][] matrix) { for (int[] ints : matrix) { System.out.println(Arrays.toString(ints)); } System.out.println(); } }
Результат вычисления представлен на рисунке 27
Рисунок 27 – Результат вычисления
б)
import java.util.Arrays; public class Main { public static void main(String[] args) { int[][] m = { {7, -4, -3}, {3, -1, 0}, {4, -6, 5}, }; print(m); //Сортировка элементов в строках for (int[] line : m) { Arrays.sort(line); } //Результат сортировки элементов в строках print(m); for (int i = 0; i < m.length; i++) { int[] column = new int[m.length]; for (int j = 0; j < m.length; j++) { column[j] = m[j][i]; } Arrays.sort(column); for (int j = 0; j < m.length; j++) { m[j][i] = column[j]; } } print(m); } private static void print(int[][] matrix) { for (int[] ints : matrix) { System.out.println(Arrays.toString(ints)); } System.out.println(); } }
Результат вычисления представлен на рисунке 28
Рисунок 28 – Результат сортировки матрицы
в)
import java.util.Arrays; public class Main { public static void main(String[] args) { int[][] m = { {7, -4, -3}, {3, -1, 0}, {4, -6, 5}, }; print(m); for (int i = 0; i < m.length; i++) { int[] line = m[i]; int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for (int k : line) { if (k > max) { max = k; } if (k < min) { min = k; } } System.out.println("Максимальное значение в строке " + (i + 1) + ": " + max); System.out.println("Минимальное значение в строке " + (i + 1) + ": " + min); } for (int i = 0; i < m.length; i++) { int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for (int[] ints : m) { int curr = ints[i]; if (curr > max) { max = curr; } if (curr < min) { min = curr; } } System.out.println("Максимальное значение в столбце " + (i + 1) + ": " + max); System.out.println("Минимальное значение в столбце " + (i + 1) + ": " + min); } } private static void print(int[][] matrix) { for (int[] ints : matrix) { System.out.println(Arrays.toString(ints)); } System.out.println(); } }
Результат вычислений максимальных и минимальных значений представлены на рисунке 29.
Рисунок 29 – Результат вычислений
Задание 6.2:
import java.util.Arrays; import java.util.Random; public class Main { public static void main(String[] args) { int[][] a = generate(3, 3); print(a); final int[][] b = { {2, 2, 2}, {2, 2, 2}, {2, 2, 2}, }; a = minus(a, b); print(a); int maxSumColumn = Integer.MIN_VALUE; for (int i = 0; i < a.length; i++) { int sumColumn = 0; for (int[] ints : a) { sumColumn += Math.abs(ints[i]); } if (sumColumn > maxSumColumn) { maxSumColumn = sumColumn; } } System.out.println("1 норма: " + maxSumColumn); } private static void print(int[][] matrix) { for (int[] ints : matrix) { System.out.println(Arrays.toString(ints)); } System.out.println(); } private static int[][] generate(int lines, int columns) { final int[][] a = new int[lines][columns]; final Random random = new Random(); for (int i = 0; i < lines; i++) { for (int j = 0; j < columns; j++) { a[i][j] = random.nextInt(0, 8); } } return a; } private static int[][] minus(final int[][] matrixA, final int[][] matrixB) { int[][] result = new int[matrixA.length][matrixB[0].length]; 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; } }
Результат вычислений нормы и вычитания матрицы, состоящей из двоек – представлен на рисунке 30.
Рисунок 30 – Результат вычислений
Задание 6.3:
import java.util.Arrays; import java.util.Random; public class Main { public static void main(String[] args) { int[][] a = generate(3, 3); print(a); final int[][] b = { {2, 2, 2}, {2, 2, 2}, {2, 2, 2}, }; a = minus(a, b); print(a); int maxSumColumn = Integer.MIN_VALUE; for (int i = 0; i < a.length; i++) { int sumColumn = 0; for (int[] ints : a) { sumColumn += Math.abs(ints[i]); } if (sumColumn > maxSumColumn) { maxSumColumn = sumColumn; } } System.out.println("p = " + maxSumColumn); int maxSumLine = Integer.MIN_VALUE; for (int[] line : a) { int sumLine = 0; for (int k : line) { sumLine += Math.abs(k); } if (sumLine > maxSumLine) { maxSumLine = sumLine; } } System.out.println("q = " + maxSumLine); double r = 0; for (int[] lines : a) { for (int el : lines) { r += Math.pow(el, 2); } } r = Math.sqrt(r); System.out.println("r = " + r); int s = 0; for (int[] lines : a) { for (int el : lines) { s += Math.abs(el); } } System.out.println("s = " + s); } private static void print(int[][] matrix) { for (int[] ints : matrix) { System.out.println(Arrays.toString(ints)); } System.out.println(); } private static int[][] generate(int lines, int columns) { final int[][] a = new int[lines][columns]; final Random random = new Random(); for (int i = 0; i < lines; i++) { for (int j = 0; j < columns; j++) { a[i][j] = random.nextInt(0, 8); } } return a; } private static int[][] minus(final int[][] matrixA, final int[][] matrixB) { int[][] result = new int[matrixA.length][matrixB[0].length]; 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; } }
Результат вычислений представлен на рисунке 31.
Рисунок 31 – Результат вычислений