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

Лаба 1 / Отчет_лаба1

.docx
Скачиваний:
5
Добавлен:
05.01.2024
Размер:
157.67 Кб
Скачать

ГУАП

КАФЕДРА ПИ

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

ст. преподаватель

М. Н. Шелест

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ № 1

ВЫЧИСЛЕНИЕ ОПРЕДЕЛЁННЫХ ИНТЕГРАЛОВ МЕТОДОМ МОНТЕ-КАРЛО

по курсу: Имитационное моделирование

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

подпись, дата

инициалы, фамилия

Санкт-Петербург 2023

Цель работы

Изучение метода Монте-Карло, определение точности вычисления определённых интегралов методом Монте-Карло.

Исходная функция

Вариант №21

График результирующей функции

В начале выполнения данной лабораторной работы необходимо представить график исходной кусочной функции. На рисунке 1 представлен данный график.

Рисунок 1 – График исходной функции

Аналитический расчет величины F

Далее необходимо аналитически вычислить значение определённого интеграла от исходной функции. Поскольку данная функция является кусочной, то интеграл будет высчитываться как сумма из трёх интегралов.

Описание разработанной программы

В данной части отчета необходимо представить описание разработанного алгоритма для поиска приблизительного значения интеграла при помощи вычислений с повышенной точностью. Сперва, в таблице 1 представлены список используемых переменных, а на рисунке 2 – блок-схема алгоритма. Также, в листинге 1 представлен программный код разработанной программы.

Таблица 1. Список использованных переменных

Имя переменной

Тип

Описание

random_nums

Массив чисел

Равномерные случайные числа

mask1

Булевый массив

Маска для заполнения массива для чисел < 1

mask2

Булевый массив

Маска для заполнения массива для чисел [1; 2]

mask3

Булевый массив

Маска для заполнения массива для чисел > 2

y_arr

Массив чисел

Результаты вычисления функции для случ. Чисел

pred_F

Дробное число

Подсчитанное значение интеграла

Рисунок 2 – Блок-схема программы

Листинг 1. Алгоритм Монте-Карло

def create_y(N) -> float:

random_nums = np.random.uniform(low, high, int(N))

mask1 = random_nums < 1

mask2 = (random_nums >= 1) & (random_nums <= 2)

mask3 = random_nums > 2

y_arr = np.zeros_like(random_nums)

y_arr[mask1] = 2 * f1(random_nums[mask1])

y_arr[mask2] = 2 * f2(random_nums[mask2] - 1)

y_arr[mask3] = 2 * f2(random_nums[mask3] - 2)

pred_F = ((high - low) / N) * np.sum(y_arr)

return pred_F

size = 2**14

pr_F = create_y(size)

pr_F

Табличное представление результатов моделирования

Затем, необходимо создать набор данных, который состоит из значений приблизительного значения интеграла в зависимости от количества случайных точек, распределённых равномерно. На рисунке 3 представлена полученная таблица из данных.

Рисунок 3 – Табличное представление моделирования

Графическое представление результатов моделирования

В качестве завершающего этапа данной лабораторной работы необходимо создать график по рассчитанной таблице. При этом ось абсцисс должна быть в логарифмическом масштабе по основанию 2. Также, на графике необходимо отметить уровнем величину F – аналитически рассчитанный интеграл. Таким образом, на рисунке 4 представлен полученный график.

Рисунок 4 – Графическое представление моделирования

Выводы

Таким образом, подводя итог ко всем выше проделанным операциям, можно сделать вывод о том, что вычисление интеграла методом Монте-Карло с повышенной точностью при достаточно большом количестве случайных значений практически приводит к истинному значению интеграла кусочной функции. Из этого следует, что чем больше число экспериментов, тем меньше погрешность оценки площади под функцией.

Соседние файлы в папке Лаба 1