
Tyutterin_Yakov_Z1411_with_1_and_2
.pdfМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
Кафедра |
Прикладной информатики |
. |
|||||
|
|
|
|
(наименование) |
|
|
|
ОТЧЁТ ПО ПРАКТИКЕ |
|
|
|
|
|
|
|
ЗАЩИЩЁН С ОЦЕНКОЙ |
|
|
|
|
|
|
|
РУКОВОДИТЕЛЬ |
|
|
|
|
|
|
|
доц., канд. техн. наук, доц. |
|
|
|
|
О. О. Жаринов |
||
|
|
|
|
|
|
||
должность, уч. степень, звание |
|
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЁТ ПО ПРАКТИКЕ
вид практики |
|
Производственная |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
тип практики |
|
Научно-исследовательская работа |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
на тему индивидуального задания |
|
Основы программирования и решения |
|
|
||||||||||||
исследовательских задач |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
выполнен |
Тюттериным Яковом Николаевичем |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
фамилия, имя, отчество обучающегося в творительном падеже |
|
|
|||||||||||
по направлению подготовки |
09.00.00 |
|
|
Информатика и вычислительная техника |
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
код |
|
|
|
наименование направления |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
наименование направления |
|
|
|
|
|
|
||||
направленности |
|
|
09.03.03 |
|
|
Прикладная информатика в |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
код |
|
|
|
наименование направленности |
|
|
||||
информационной сфере |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
наименование направленности |
|
|
|
|
|
|
||||
Обучающийся группы № Z1411 |
|
|
|
|
|
|
Я. Н. Тюттерин |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
номер |
|
|
подпись, дата |
|
инициалы, фамилия |
|
|
Санкт–Петербург 2024
2
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
Кафедра прикладной информатики
Направление подготовки: 09.03.03 Прикладная информатика
ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
на производственную практику (научно-исследовательскую работу)
для |
Тюттерина Якова Николаевича |
|
||
|
|
(ФИО студента полностью) |
|
|
Студента 3 курса |
учебная группа № |
|
Z1411 |
Место проведения практики: Санкт-Петербургский государственный университет
аэрокосмического |
приборостроения, |
|
адрес организации: Большая Морская ул., 67, Санкт-Петербург |
|
|
(указывается полное наименование структурного подразделения / профильной организации и её структурного подразделения, а также их фактический адрес)
Срок выполнения научно-исследовательской работы с «___» __________ 2024 г. по
«__» __________ 2024 г.
Цель выполнения научно-исследовательской работы: освоение методики проведения всех этапов научно-исследовательских работ – от постановки задачи исследования до подготовки статей, заявок на получение гранта, участия в конкурсе научных работ и т.д., вплоть до написания магистерской диссертации. Освоение работы в математическом пакете MatLab, приобрести опыт, который в дальнейшем может понадобиться в процессе учебы там, где присутствуют любые численные расчеты и моделирование технических и экономических систем, а также требуется выполнение научных и инженерных расчетов при работе с массивами данных. Все это, несомненно, внесѐт свой вклад в формирование высококвалифицированного специалиста. Также будет

3
происходить частичная работа со средой IntelliJ Idea, языком программирования Java и
библиотекой java.lang.Math.
Задачи научно-исследовательской работы:
−проведение сбора, анализа и обобщения научного материала по теме практики;
−получить навыки самостоятельной научно-исследовательской работы;
−проведение математических исследований, требующих вычислений и аналитических выкладок;
−разработка и анализ алгоритмов;
−математическое моделирование, компьютерный эксперимент;
−анализ и обработка данных;
−визуализация, научная и инженерная графика;
−разработка графических и расчетных приложений.
Содержание практики, вопросы, подлежащие изучению и отрабатываемые элементы практической подготовки:
−современная проблематика исследуемой предметной области;
−эмпирические методы сбора и анализа информации в той или иной научной сфере, связанной с темой практики;
−конкретные программные продукты и информационные ресурсы.
Планируемые результаты научно-исследовательской работы:
−закрепление знаний, полученных в ходе обучения;
−получение реального опыта научно-исследовательской деятельности;
−формирование навыков ведения научно-исследовательской работы.
Рассмотрено на заседании кафедры
(протокол от « » |
2024 г. № ) |
СОГЛАСОВАНО1 |
УТВЕРЖДАЮ |
______________________________________ ________________________________________
Руководитель по практической подготовке |
Руководитель по практической подготовке |
от профильной организации |
от Института |
«___»_____________________ 20____ г. |
«___»_____________________ 20____ г. |
Задание принято к исполнению: |
Тюттерин Я.Н. |
«10» апреля 2024 г. |
|
(подпись студента) |
|
1 при прохождении практики в профильной организации
|
4 |
Оглавление |
|
Введение........................................................................................................................... |
5 |
Задание 1. Простейшие вычисления в Java..................................................................... |
6 |
Задание 2. Работа с массивами. Векторы-столбцы и векторы-строки........................... |
7 |
Задание 3. Работа с массивами ...................................................................................... |
14 |
Задание 4. Двумерные массивы и матрицы .................................................................. |
19 |
Задание 5. Блочные матрицы......................................................................................... |
25 |
Задание 6. Визуализация матриц и поэлементные операции над ними....................... |
31 |
Задание 7. Графики, диаграммы и гистограммы .......................................................... |
39 |
Задание 8. М-файлы. Численные методы и программирование .................................. |
46 |
Задание 9. Программирование. Операторы цикла........................................................ |
49 |
Задание на выполнение этапа №2. Исследование метода Монте-Карло для |
|
вычисления площадей плоских фигур ................................................................................... |
51 |
Список использованных источников ............................................................................ |
58 |
5
Введение
Зарождение системы MATLAB относится к концу 70-х годов, когда первая версия этой системы была использована в Университете Нью Мехико и в Стэндфордском университете для преподавания курсов теории матриц, линейной алгебры и численного анализа. В это время активно разрабатывались пакеты прикладных программ по линейной алгебре LINPACK и EISPACK на языке FORTRAN, и авторы системы MATLAB искали способы использовать эти пакеты, не программируя на языке FORTRAN. Сейчас возможности системы значительно превосходят возможности первоначальной версии матричной лаборатории Matrix Laboratory. Нынешний MATLAB – это высокоэффективный язык инженерных и научных вычислений. Он поддерживает математические вычисления, визуализацию научной графики и программирование с использованием легко осваиваемого операционного окружения, когда задачи и их решения могут быть представлены в нотации, близкой к математической. Задачей данной практической работы является приобретение навыков для пользования системой MATLAB. Для получения таких навыков необходимо будет решить несколько практических заданий. В ходе выполнения заданий будут получены знания по работе с векторами, матрицами, символьными массивами, по построению логических областей.
Некоторые задания будут выполнены в среде IntelliJ Idea на языке программирования Java. Среди стандартных библиотек данного языка программирования присутствует java.lang.Math, которая позволяет выполнять стандартные операции вычисления, необходимые для выполнения заданий на производственно-исследовательскую работу.
При помощи пакета MatLab можно решить значительный спектр задач, например: проведение математических исследований, требующих вычислений и аналитических выкладок; разработка и анализ алгоритмов; математическое моделирование, компьютерный эксперимент; анализ и обработка данных; визуализация, научная и инженерная графика; разработка графических и расчѐтных приложений.

6
Задание 1. Простейшие вычисления в Java
Задание 1.1:
Запишем формулу на языке программирования Java:
import static java.lang.Math.*;
public class Main {
public static void main(String[] args) {
double result = (cTan(3.2) + sqrt(4 + cos(1.3))) / pow((cos(1.6 * PI) - 3 * tan(2.8)), 3)
- pow(E, -5 / 9.0) * (1 + cos(3 * PI)); System.out.println(result);
}
private static double cTan(double val) { return 1 / tan(3.2);
}
}
Результат вычисления представлен на рисунке 1.
Рисунок 1 – Результат вычисления

7
Задание 1.2:
При текущем условии задача в результате будет NaN(результат не определен), так как результатом вычисления косинуса из 9.1 будет отрицательное число, а извлечь корень из отрицательного числа – возможно, но мы выйдем за пределы действительных чисел. Следовательно, добавляем дополнительную операцию по преобразованию отрицательного числа к положительному. Реализация на языке программирования Java представлен ниже:
public class Main {
public static void main(String[] args) { double x = sqrt(log(2.6)) / sin(5.4); double y = sqrt(abs(cos(9.1)) / log(3.4)); double z = sqrt(log(5.48) / log(3.6));
double result = (x + y) / z; System.out.println(result);
}
}
Результат вычисления представлен на рисунке 2.
Рисунок 2 – Результат вычисления
Задание 2. Работа с массивами. Векторы-столбцы и векторы-строки

8
Задание 2.1:
Решение на языке программирования Java представлено ниже, где при переборе каждого элемента из векторов происходит их суммирование.
import java.util.Arrays;
public class Main {
public static void main(String[] args) { double[] a = {6.2, 9.6, 3.5}; double[] b = {5.5, 9.8, 1.3};
double[] result = new double[a.length];
for (int i = 0; i < a.length; i++) { result[i] = a[i] + b[i];
}
System.out.println(Arrays.toString(result));
}
}
Результат вычисления представлен на рисунке 3.
Рисунок 3 – Результат вычисления суммы векторов

9
Задание 2.2:
Реализация на языке программирования Java представлена ниже, где при обращении к соответствующим ячейкам массива происходит получение элемента.
import java.util.Arrays;
public class Main {
public static void main(String[] args) { double[] v = {4.2, 7.3, 7.9, 3.6, 3.5}; System.out.println(Arrays.toString(v));
System.out.println(v[1]); //Указываем 1, так как индексы в массиве с
0
v[3] = 5.7; System.out.println(Arrays.toString(v)); double[] w = {v[0], v[4], v[2]}; System.out.println(Arrays.toString(w));
}
}
Результат вычисления представлен на рисунке 4.
Рисунок 4 – Результат выполнения
Задание 2.3:
Реализация на языке программирования Java представлена ниже.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
double[] w = {9.8, 7.4, 1.3, 2.5, 2.1, 3.7, 2.9}; System.out.println(Arrays.toString(w));
for (int i = 2; i < 7; i++) { //[3; 7] w[i] = 0;
}
System.out.println(Arrays.toString(w));
double[] w1 = new double[4];
for (int i = 1, j = 0; i < 5; i++, j++) { //[2; 5] w1[j] = w[i];
}
System.out.println(Arrays.toString(w1));

10
double[] w2 = new double[w.length - 1]; for (int i = 0, j = 0; i < w.length; i++) {
if (i == 1) { //Исключаем второй элемент continue;
}
w2[j++] = w[i];
}
System.out.println(Arrays.toString(w2));
}
}
Результат представлен на рисунке 5.
Рисунок 5 – Результат выполнения
Задание 2.4:
Реализация представлена ниже. import java.util.Arrays;
public class Main {
public static void main(String[] args) { double[] z = {2.7, 4.4, 3.5, 5.2, 6.6, 8.3}; System.out.println(Arrays.toString(z)); double pow = 1;
double min = Double.MAX_VALUE; double max = Double.MIN_VALUE; int maxIndex = 0;
for (int i = 0; i < z.length; i++) { double curr = z[i];
pow *= curr;
if (min > curr) { min = curr;
}
if (max < curr) { max = curr; maxIndex = i;
}
}