§ 8. Вычисление значения числа π методом Монте-Карло
Site: | Профильное обучение |
Course: | Информационные технологии. 11 класс (Базовый уровень) |
Book: | § 8. Вычисление значения числа π методом Монте-Карло |
Printed by: | Guest user |
Date: | Saturday, 9 November 2024, 1:04 AM |
Table of contents
- 8.1. Постановка задачи (этап 1)
- 8.2. Выбор плана создания модели (этап 2)
- 8.3. Создание документальной математической модели (этап 3а)
- 8.4. Создание документальной расчетной модели (этап 3б)
- 8.5. Создание компьютерной расчетной модели (этап 3в)
- 8.6. Проверка адекватности модели (этап 4)
- 8.7. Получение решения задачи с помощью модели (этап 5)
- Упражнения
8.1. Постановка задачи (этап 1)
Задача. Методом Монте-Карло вычислить значение числа . |
Известно более 15 методов вычисления значения числа .
|
8.2. Выбор плана создания модели (этап 2)
Геометрический метод Монте-Карло позволяет вычислять площади плоских фигур. Если этим методом найти площадь круга заданного радиуса , то, пользуясь известной формулой , можно найти значение . Изберем следующий план создания модели: 3а) создание документальной математической модели; |
Для вычисления площади круга следует построить чертеж круга и базового прямоугольника, подобрать формулы, поэтому сначала будем строить документальную математическую модель. Затем следует подобрать подходящее программное средство для создания компьютерной модели и построить формулы для компьютерных расчетов. Это означает, что нужно создать документальную расчетную модель. В заключение расчетную модель нужно реализовать на компьютере, т.е. создать компьютерную модель. |
8.3. Создание документальной математической модели (этап 3а)
Так как значение радиуса круга ограничений не имеет, возьмем круг единичного радиуса (r = 1). Тогда минимальный базовый прямоугольник можно построить в форме квадрата со стороной 2 (пример 8.1). Площадь базового квадрата S0 = 4. Пусть S — искомая площадь круга. Методом Монте-Карло необходимо имитировать процесс посыпания базового квадрата точками-песчинками, подсчитывая общее число n точек и число k точек, попавших в круг (пример 8.2). Для создания компьютерной расчетной модели можно использовать электронные таблицы и язык программирования. Но в электронных таблицах общее число n точек будет определяться числом строк в расчетной таблице, а в программе на языке Pascal — только числом повторений цикла. Поэтому выбираем систему PascalABC.NET. |
Пример 8.1. Построим базовый квадрат и круг в прямоугольной системе координат следующим образом. Пример 8.2. Для вычисления площади круга будем использовать основную формулу метода Монте-Карло . В нашем случае . Для вычисления значения числа воспользуемся выведенной ранее формулой , которая для единичного круга получит вид . Оказалось, что для вычисления значения числа достаточно вычислить площадь единичного круга. |
8.4. Создание документальной расчетной модели (этап 3б)
В программе на языке Pascal следует организовать цикл for с числом повторений n и в нем генерировать случайные координаты x и y точек на базовом квадрате (пример 8.3). Для подсчета числа точек, попавших на единичный круг, в цикле следует использовать оператор if с условием попадания точки в круг (x – 1)2 + (y – 1)2 ≤ 1 и при выполнении этого условия оператором k:=k+1 организовать накопление значений переменной k, как счетчика. После цикла необходимо организовать вывод результата на экран (пример 8.4). |
Пример 8.3. Для генерации координат точек воспользуемся функцией random(). Функция генерирует случайные действительные числа от 0 до 1, а координаты точек-песчинок на базовом квадрате должны принимать значения от 0 до 2. Тогда координаты точек нужно вычислять, используя выражение 2*random(). Пример 8.4. Для сравнения выведем на экран рассчитанное значение числа и фактическое значение, которое хранится в системе PascalABC.NET как значение переменной с именем pi. |
8.5. Создание компьютерной расчетной модели (этап 3в)
В системе PascalABC.NET создадим программу montekarlo. В ней объявим переменные n и k типа integer для хранения числа точек-песчинок на базовом квадрате и на круге соответственно, а также переменные s, x и y типа real для хранения значений площади круга и координат точек-песчинок соответственно. В основном разделе программы, задаем начальные значения и организуем цикл (пример 8.5). Далее подсчитываем результат, выводим на экран результат и точное значение числа : s := 4 * k / n; |
Пример 8.5. Задаем начальные значения:
В цикле for с начальным значением переменной цикла 1 и конечным значением n присваиваем случайные значения координатам очередной точки:
С помощью условного оператора if организуем подсчет числа k точек, которые попали в круг:
Осталось подсчитать площадь круга по основной формуле метода. |
8.6. Проверка адекватности модели (этап 4)
Адекватность модели проверяется сравнением полученного значения числа с точным. При числе повторений 1000 рассчитанное значение должно находиться в пределах от 3,0 до 3,3 (пример 8.6). |
Пример 8.6. Каждый новый запуск программы меняет рассчитанное значение, так как каждый раз используется новый набор из 1000 точек-песчинок с другими случайными координатами. |
8.7. Получение решения задачи с помощью модели (этап 5)
В результате нескольких запусков программы можно заметить, что для числа точно определяется только целая часть значения — число 3. Уточнить результат позволяет увеличение числа n точек-песчинок. Теоретически, если увеличить число n точек-песчинок в 100 раз, точность результата увеличится на 1 десятичный разряд вправо (пример 8.7). |
Пример 8.7. Увеличим число n в 100 раз, дописывая в программе нули в его значении справа. В результате нескольких запусков программы можно убедиться, что в значении числа p определяются уже два разряда — 3,1. Увеличим число n еще в 100 раз. Точность вычислений увеличивается до трех разрядов — 3,14. Но при этом растет и время исполнения программы. |
Упражнения
1. Перечислите этапы моделирования в задаче вычисления значения числа методом Монте-Карло.
2. Введите текст программы montekarlo в систему PascalABC.NET в соответствии с указаниями, приведенными в параграфе.
3. Проведите этапы 4 и 5 моделирования в соответствии с указаниями, приведенными в параграфе.
4. Создайте модель для вычисления значения числа методом Монте-Карло в электронных таблицах, построив рабочую таблицу размером в 1000 строк для подсчета числа k. Сравните результат с полученным ранее.