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

Tyutterin_Yakov_Z1411_with_1_and_2

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

11

System.out.println("Pow: " + pow);

System.out.println("Min: " + min);

System.out.println("Max: " + max);

System.out.println("MsxIndex: " + maxIndex);

}

}

Результаты вычислений представлены на рисунках 6-7. Результат (индекс максимального равен 5, так как индексы в массиве с 0):

Рисунок 6 - Индекс максимального равен 5, так как индексы в массиве с 0

Рисунок 7 - Но можно добавить: maxIndex = i + 1; и результат станет иметь вид:

Задание 2.5:

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

import java.util.Arrays; import java.util.Collections; import java.util.Map;

import java.util.TreeMap;

public class Main {

public static void main(String[] args) {

Double[] r = {-8.2, 6.5, -9.4, 3.8, 9.4, 6.1};

System.out.println("Default: " + Arrays.toString(r));

Arrays.sort(r);

System.out.println("ASC: " + Arrays.toString(r));

Arrays.sort(r, Collections.reverseOrder());

System.out.println("DESC: " + Arrays.toString(r));

12

//Пункт "в" дублирует пункт "а"

r = new Double[]{-8.2, 6.5, -9.4, 3.8, 9.4, 6.1}; System.out.println("Default: " + Arrays.toString(r));

//Ключ - значение из массива : Значение - индекс + 1

Map<Double, Integer> map = new TreeMap<>(); for (int i = 0; i < r.length; i++) {

map.put(r[i], i + 1);

}

System.out.println(map);

System.out.println("Значения в порядке возрастания: " + map.keySet());

System.out.println("Старые позиции: " + map.values());

}

}

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

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

Задание 2.6:

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

import java.util.Arrays;

public class Main {

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

int[] v2 = {-2, 8, -9, 1}; System.out.println("v1: " + Arrays.toString(v1)); System.out.println("v2: " + Arrays.toString(v2)); int[] result = new int[v1.length];

for (int i = 0; i < v1.length; i++) { result[i] = v1[i] * v2[i];

}

System.out.println("A(умножение векторов): " +

Arrays.toString(result));

13

for (int i = 0; i < v1.length; i++) { v1[i] = (int)Math.pow(v1[i], 2);

}

System.out.println("Б(Возведение вектора v1 во вторую степень): " + Arrays.toString(v1));

double[] v1Upd = new double[]{3, 4, -5, 3};

for (int i = 0; i < v1Upd.length; i++) { v1Upd[i] = Math.pow(v1Upd[i], v2[i]);

}

System.out.println("В(Возведение вектора v1 в степени, равные элементам v2): " + Arrays.toString(v1Upd));

v1 = new int[]{3, 4, -5, 3}; v2 = new int[]{-2, 8, -9, 1}; double[] result1 = div(v1, v2);

System.out.println("Г(Деление вектора v1 на v2): " + Arrays.toString(result1));

double[] result2 = div(v2, v1); System.out.println("Г(Деление вектора v2 на v1): " +

Arrays.toString(result2));

int[] v = {4, 11, 5, 2}; System.out.println(Arrays.toString(v)); double[] resultD1 = new double[v.length]; for (int i = 0; i < v.length; i++) {

resultD1[i] = v[i] + 1.8;

}

System.out.println("Д(Прибавление 1.8 к вектору v): " + Arrays.toString(resultD1));

double[] resultD2 = new double[v.length]; for (int i = 0; i < v.length; i++) {

resultD2[i] = v[i] - 1.8;

}

System.out.println("Д(Вычитание 1.8 из вектора v): " + Arrays.toString(resultD2));

int[] resultD3 = new int[v.length]; for (int i = 0; i < v.length; i++) {

resultD3[i] = v[i] * 2;

}

System.out.println("Д(Умножение вектора v на 2): " + Arrays.toString(resultD3));

double[] resultD4 = new double[v.length]; for (int i = 0; i < v.length; i++) {

resultD4[i] = v[i] / 2.0;

}

System.out.println("Д(Деление вектора v на 2): " +

Arrays.toString(resultD4));

}

private static double[] div(int[] arr1, int[] arr2) { double[] result = new double[arr1.length];

for (int i = 0; i < arr1.length; i++) { result[i] = (double) arr1[i] / arr2[i];

}

return result;

}

}

14

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

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

Задание 3. Работа с массивами

15

Задание 3.1:

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

import static java.lang.Math.*;

public class Main {

public static void main(String[] args) {

double[] values = {0.1, 0.3, 0.4, 0.7, 1.3, 1.5, 2.2};

for (double x : values) {

System.out.println("f(" + x + ") = " + funcY(x));

}

}

private static double funcY(double x) {

return 7 * pow(sin(x), 2) / (1 * tan(x)) - pow(E, 5 * x) * log(x);

}

}

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

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

Задание 3.2:

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

import java.util.Arrays;

import static java.lang.Math.*;

public class Main {

public static void main(String[] args) { System.out.println(Arrays.toString(generate(0, 1, 0.2)));

System.out.println(Arrays.toString(generate(2, 1, -0.4)));

}

private static double[] generate(double start, double end, double step) { int length = (int) abs((max(start, end) - min(start, end)) / step) +

1;

double[] result = new double[length];

16

for (int i = 0; i < length; i++, start += step) { result[i] = start;

}

return result;

}

}

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

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

Задание 3.3

График построен с шагом 0.3 и представлен на рисунке 12.

Рисунок 12 – График

17

Задание 3.4

График построен с шагом 0.25 и представлен на рисунке 13.

Рисунок 13 – График

Задание 3.5:

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

import static java.lang.Math.pow; import static java.lang.Math.sqrt;

public class Main {

public static void main(String[] args) { Vector vA = new Vector(8.1, -9.7, 1.6); Vector vB = new Vector(6.1, 7.5, -0.9); System.out.println(vA); System.out.println(vB);

System.out.println("(A)Скалярное произведение: " + vA.scalarMult(vB));

System.out.println("(Б)Длина(модуль) вектора A: " + vA.length()); System.out.println("(В)Произведение векторов: " + vA.vectorMult(vB));

18

}

private record Vector(double x, double y, double z) { public double scalarMult(Vector c) {

return x * c.x + y * c.y + z * c.z;

}

public Vector vectorMult(Vector c) { double tmpX = y * c.z - z * c.y; double tmpY = -(x * c.z - z * c.x); double tmpZ = z * c.y - y * c.x; return new Vector(tmpX, tmpY, tmpZ);

}

public double length() {

return sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));

}

@Override

public String toString() {

return "x = " + x + ", y = " + y + ", z = " + z;

}

}

}

Результат представлен на рисунке 14.

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

Задание 3.6:

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

import static java.lang.Math.pow; import static java.lang.Math.sqrt;

public class Main {

public static void main(String[] args) { Vector a = new Vector(2.5, 0, 0); Vector b = new Vector(6.5, 5.9, 0); Vector c = new Vector(-1.7, -2.6, 8.5);

double v = b.vectorMult(c).scalarMult(a); System.out.println(v);

}

private record Vector(double x, double y, double z) { public double scalarMult(Vector c) {

return x * c.x + y * c.y + z * c.z;

}

public Vector vectorMult(Vector c) { double tmpX = y * c.z - z * c.y;

19

double tmpY = -(x * c.z - z * c.x); double tmpZ = z * c.y - y * c.x; return new Vector(tmpX, tmpY, tmpZ);

}

public double length() {

return sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));

}

@Override

public String toString() {

return "x = " + x + ", y = " + y + ", z = " + z;

}

}

}

Результат вычислений зафиксирован на рисунке 15.

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

Задание 4. Двумерные массивы и матрицы

20

Задание 4.1:

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

public class Main {

public static void main(String[] args) { int[][] c = {{9, 3, -5}, {-3, -5, -1}}; int[][] a = {{9, -7, -4}, {1, 9, 0}}; int[][] result = new int[2][];

for (int i = 0; i < c.length; i++) { int[] lineC = c[i];

int[] lineA = a[i];

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

resultLine[j] = lineA[j] + lineC[j];

}

result[i] = resultLine;

}

System.out.println("Сумма: " + Arrays.deepToString(result));

int[][] resultMin = new int[2][]; for (int i = 0; i < c.length; i++) {

int[] lineC = c[i]; int[] lineA = a[i];

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

}

resultMin[i] = resultLine;

}

System.out.println("Разность: " + Arrays.deepToString(resultMin));

}

}

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

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

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