Tyutterin_Yakov_Z1411_with_1_and_2
.pdf
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 – Результат вычислений
