Лабораторная работа №1
Введение в численные методы на Python: Численное интегрирование
Технические требования:
Среда разработки для написания кода на Python Компилятор Python 3 (+ стандартный набор библиотек)
Требования к знаниям студентов:
Основы синтаксиса Python 3:
-умение работать с переменными и знание типов данных
-умение работать со списками
-умение считывать данные из файла
-умение выводить данные в консоль/файл
-знание условных конструкций if-elif-else
-умение писать циклы for/while
-умение создавать и вызывать функции, возращать значения Базовое владение математическим аппаратом:
-понимание, что такое функция
-понимание геометрического смысла интеграла
Цель работы:
Знакомство с численными методами для решения задач:
-вычисление определенных интегралов;
-вычисление площадей с помощью метода Монте-Карло.
Теоретическое введение:
Блок 1 “Способы вычисления определенных интегралов”
b
Определенный интеграл I = ∫f (x )dx может быть приближенно вычислен
a
различными методами численного интегрирования. Рассмотрим некоторые из них: методы левых, правых и средних прямоугольников, метод трапеций, метод парабол (Симпсона) и метод Монте-Карло (будет рассмотрен позднее).
1. Методы прямоугольников можно рассматривать вместе ввиду того, что они очень схожи между собой. Методы основаны на разбиении отрезка
интегрирования [a, b] на n равных частей длиной h = |
b−a |
и замене |
|
n |
|
подынтегральной функции f(x) на каждом из этих интервалов константой, равной значению функции либо в начале интервала (левый прямоугольник), либо в конце
интервала (правый прямоугольник), либо посередине интервала (средний прямоугольник).
Рис. 1. Графическая интерпретация методов левых прямоугольников (левый верхний рисунок), правых прямоугольников (правый верхний) и центральных прямоугольников (нижний).
В таком случае значение интеграла равно сумме вычисленных площадей прямоугольников и будет тем ближе к истинному, чем меньше выбран шаг h. Уменьшая значение шага можно получать более точные значения интеграла.
2. Метод трапеций заменяет подынтегральную функцию на линейную интерполяцию между соседними узлами сетки (значения функции в соседних точках соединяются прямой линией). Маленький участок интеграла (на шаге h) представляется в качестве прямоугольной трапеции с основаниями, параллельными оси OY и прямыми углами у стороны на оси OX. Площадь под графиком аппроксимируется суммой площадей указанных трапеций (образованных прямыми линиями, соединяющими значения функции в соседних точках).
a |
b |
Рис. 2. Графическая интерпретация метода трапеций |
|
3. Метод парабол (Симпсона) является наиболее сложным, но вместе с тем и наболее точным из упомянутых алгоритмов численного интегрирования. Он использует параболическую интерполяцию через три последовательных узла
сетки. Отрезок [a, b] разбивается на четное количество подинтервалов, каждый из которых состоит из двух смежных интервалов длины h. На каждом таком двойном интервале функция интерполируется квадратичной функцией. Формулу для метода Симпсона (параболической интерполяции через 3 точки) предлагается самостоятельно найти в литературе или сети Интернет.
(x)
P(x)
Рис. 3. Графическая интерпретация метода Симпсона, где функция f(x) интерполируется (заменяется) на участке [a, b] параболой P(x). Здесь расстояния [a, m] и [m, b] равны шагу h.
Блок 2 “Вычисление определенных интегралов методом Монте-Карло”
Метод Монте-Карло относится к методам численного интегрирования с использованием псевдослучайных чисел.
Пусть требуется вычислить определенный интеграл
b
I = ∫f (x )dx
a
Пусть также подынтегральная функция положительна и ограничена сверху константой во всей области интегрирования:
0≤f (x )≤M.
Будем генерировать точки со случайными координатами в прямоугольнике [a, b] × [0, М] с равномерным распределением внутри него. Для получения одной точки необходимо и достаточно сгенерировать пару независимых случайных чисел, первое из которых имеет равномерное распределение на отрезке [a, b], а второе — на отрезке [0, M].
Сгенерировав достаточно большое количество N случайных точек, подсчитаем количество K точек, попавших в криволинейную трапецию, ограниченную снизу осью x, слева и справа прямыми x = a и x = b и сверху графиком подынтегральной функции. При достаточно большом количестве точек и
хорошем качестве генератора случайных чисел можно ожидать, что площади выбранного прямоугольника и криволинейной трапеции соотносятся как количества попавших в них точек, откуда для искомого интеграла получаем оценку
I ≈ NK (b−a) M.
2
Рис. 4. Вычисление интеграла I = ∫ 12 dx методом Монте-Карло. Из 50 точек, равномерно
1 x
распределенных в прямоугольнике [1, 2] × [0, 1], 27 точек оказались под графиком, что дает оценку I ≈ 0.54 при точном значении 0.5.
Точность метода зависит от выбора верхней границы M. Оптимальной оказывается такая граница, при которой под график попадает примерно половина всех точек.
Практическая часть Распределение вариантов и обязательной-дополнительной частей
По усмотрению преподавателя студент выполняет либо задание 1.1, либо задание 1.2, и в обязательном порядке задания 2.1 и 2.2. В первом столбце перечислены номера студентов согласно списку группы. В первой строке указаны
номера заданий. На пересечении порядкового номера студента и номера задания
отмечен вариант, который необходимо выполнить. |
2.1 (об) |
2.2 (об) |
||
Студент\Задание |
1.1 (об) |
1.2 (доп) |
||
|
|
|
|
|
1 |
1 |
1 |
1 |
без вар |
2 |
2 |
2 |
2 |
без вар |
3 |
3 |
3 |
3 |
без вар |
4 |
4 |
4 |
4 |
без вар |
5 |
5 |
5 |
5 |
без вар |
6 |
6 |
6 |
6 |
без вар |
7 |
7 |
7 |
7 |
без вар |
8 |
8 |
8 |
8 |
без вар |
9 |
9 |
9 |
8 |
без вар |
10 |
10 |
10 |
7 |
без вар |
11 |
1 |
1 |
6 |
без вар |
12 |
2 |
2 |
5 |
без вар |
13 |
3 |
3 |
4 |
без вар |
14 |
4 |
4 |
3 |
без вар |
15 |
5 |
5 |
2 |
без вар |
16 |
6 |
6 |
1 |
без вар |
17 |
7 |
7 |
1 |
без вар |
18 |
8 |
8 |
2 |
без вар |
19 |
9 |
9 |
3 |
без вар |
20 |
10 |
10 |
4 |
без вар |
21 |
1 |
1 |
5 |
без вар |
22 |
2 |
2 |
6 |
без вар |
23 |
3 |
3 |
7 |
без вар |
24 |
4 |
4 |
8 |
без вар |
25 |
5 |
5 |
8 |
без вар |
26 |
6 |
6 |
7 |
без вар |
27 |
7 |
7 |
6 |
без вар |
28 |
8 |
8 |
5 |
без вар |
29 |
9 |
9 |
4 |
без вар |
30 |
10 |
10 |
3 |
без вар |
Задание 1.1 (обязательная часть) “Вычисление определенного интеграла различными методами”
Вычислите предложенный интеграл указанным методом, сравните полученное решение с аналитическим (точным решением интеграла), увеличьте число участков разбиений и проверьте, стало ли решение точнее (ближе к аналитическому решению). Подумайте, почему так произошло. Задания и алгоритмы решения:
1
Вариант 1. ∫ex dx, метод правых прямоугольников.
0
π
Вариант 2. ∫sin(x)dx, метод левых прямоугольников.
0
2
Вариант 3. ∫
0
1
Вариант 4. ∫
0
1
Вариант 5. ∫
0
1
Вариант 6. ∫
0
1
Вариант 7. ∫
0
x 2 dx, метод центральных прямоугольников.
1+x
1 |
dx, метод трапеций. |
√1−x2 |
ex x dx, метод парабол (Симпсона).
1+e
1 3 dx, метод правых прямоугольников.
1+x
1 x dx, метод левых прямоугольников.
1+e
1
Вариант 8. ∫√1−x2 dx, метод центральных прямоугольников.
0
1
Вариант 9. ∫ 1 4 dx, метод трапеций.
0 1+x
1
Вариант 10. ∫ 1 dx, метод парабол (Симпсона).
0 √1+x3
Задание 1.2 (дополнительная часть) “Сравнение точностей методов численного интегрирования при фиксированном шаге”
Вычислите интеграл своего варианта (задание 1.1) всеми пятью численными методами (методы правых, левых и центральных прямоугольников, трапеций, парабол) при одинаковом достаточно малом шаге h. Сравните полученные ответы с аналитическим решением интеграла. Какие методы оказались наиболее и наимее точными?
Задание 2.1 (обязательная часть) “Вычисление определенного интеграла методом Монте-Карло”
Вычислите предложенный интеграл методом Монте-Карло и сравните ответ с точным результатом:
5
Вариант 1. ∫e−x sin(2 x)dx
0
1
Вариант 2. ∫−1 e−x (x2−x−12 )dx
|
1 |
|
|
|
|
Вариант 3. |
∫(x+1)arctan(x)dx |
||||
|
−1 |
|
|
|
|
|
−0.7 |
|
x+1 |
|
|
Вариант 4. |
∫ |
|
dx |
||
2 |
|
||||
|
−1.5 |
x −x−1 |
|
||
|
2 |
|
|
|
|
Вариант 5. |
∫xln(x)dx |
|
|||
|
0 |
|
|
|
|
|
100 |
|
|
|
|
Вариант 6. |
∫ sin(ln(x))dx |
||||
|
1 |
|
|
|
|
|
1 |
|
|
|
|
Вариант 7. |
∫ xcosh(x+1)dx |
||||
|
−1 |
|
|
|
|
|
3 |
|
|
|
|
Вариант 8. |
∫e−√ |
|
(x−1)dx |
||
x |
|||||
|
0 |
|
|
|
|
Задание 2.2 (обязательная часть) “Вычисление числа π методом МонтеКарло”
Известно, что площадь круга определяется как произведение квадрата радиуса на число π. Если мы впишем единичный круг в квадрат с длиной стороны равной 2 (как показано на рисунке), то отношение площадей квадрата и круга будет равно π/4 – это можно легко посчитать, аккуратно записав площади круга и квадрата, а затем поделив одно на другое. Отношение площадей можно с требуемой точностью посчитать с помощью метода Монте-Карло, а из этого соотношения с необходимой точностью определяется число π. Критерием достижения точности числа π можно считать то, что при удвоении числа точек для
метода Монте-Карло число π вплоть до указанного разряда |
не |
изменилось. |
Напишите программу, которая получает на вход точность (погрешность) и |
||
возвращает рассчитанное вышеуказанным способом число |
π |
с заданной |
точностью. |
|
|
Заключение:
В качестве результата необходимо представить отчет, включающий в себя листинг программы (текст исходного кода), полученные результаты, а также их анализ.
При сдаче работы студент должен знать изученные численные методы, а также разбираться в коде написанной программы.
