Печатать книгуПечатать книгу

§ 8. Вычисление значения числа π методом Монте-Карло

Сайт: Профильное обучение
Курс: Информационные технологии. 11 класс (Базовый уровень)
Книга: § 8. Вычисление значения числа π методом Монте-Карло
Напечатано:: Гость
Дата: Воскресенье, 28 Апрель 2024, 02:15

8.1. Постановка задачи (этап 1)

Задача. Методом Монте-Карло вычислить значение числа .

Известно более 15 методов вычисления значения числа .

8.2. Выбор плана создания модели (этап 2)

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

.

Изберем следующий план создания модели:

3а) создание документальной математической модели;
3б) создание документальной расчетной модели;
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 с  условием попадания точки в круг (– 1)2 + (– 1)≤ 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;
writeln('Результат pi = ',s);
writeln('Точно pi = ',pi);

Пример 8.5. Задаем начальные значения:

n := 1000;
k := 0;

В цикле for с начальным значением переменной цикла 1 и конечным значением n присваиваем случайные значения координатам очередной точки:

x := 2 * random();
y := 2 * random();

С помощью условного оператора if организуем подсчет числа k точек, которые попали в круг:

if sqr(x-1)+sqr(y-1)<=1 then k:=k+1;

Осталось подсчитать площадь круга по основной формуле метода.

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. Сравните результат с полученным ранее.