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

Tyutterin_Yakov_Z1411_with_1_and_2

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

31

Задание 6. Визуализация матриц и поэлементные операции над ними

Задание 6.1:

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

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;

32

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},

33

}; 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 – Результат сортировки матрицы

34

в)

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) {

35

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);

36

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.

37

Рисунок 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;

}

38

}

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.

39

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

Задание 7. Графики, диаграммы и гистограммы

40

Для решения некоторых задач далее будет использоваться Matlab. Немного вводных.

За многие годы накоплены обширные библиотеки научных подпрограмм на различных алгоритмических языках, предназначенных для решения типовых задач вычислительной математики. Кроме того, имеется целый ряд различных математических пакетов, реализующих разнообразные численные методы и производящих аналитические математические преобразования. Наиболее известными сегодня являются пакеты прикладных программ (ППП) и математические библиотеки: MatLab (фирма The MathWorks), Maple (фирма Waterloo Maple Inc), Mathematica (фирма Wolfram Research), MathCAD (фирма MathSoft Inc). MatLab – MATrix LABoratory (матричная лаборатория).

Эта система предназначена для осуществления любых численных эта система предназначена для осуществления любых численных расчетов и моделирования технических и физических систем, а также выполнения научных и инженерных расчетов при работе с массивами данных.

Задание 1:

t = [-1:0.1:1];

x = cos(t).*exp(-t); bar(t,x,1.0);

Результат построения графика представлен на рисунке 32.

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