Площадь окружности методом монте карло

Расчет площади пересечения окружностей методом Монте-Карло

Площадь окружности методом монте карлоЭта статья родилась как логическое продолжение пятничного поста о методе Бутстрапа, а особенно, комментариев к нему. Не защищая метод Бутстрапа, стоит уделить внимание методам Монте-Карло. Здесь я хочу поделиться своим опытом применения Монте-Карло в одной из своих практических задач, а также обоснованием законности этого применения.

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

Обоснование

Задача расчета площади пересечения двух окружностей является тривиальной геометрической задачей (координаты центров окружностей и их радиусы нам известны). Площадь пересечения двух окружностей – это сумма площадей соответствующих сегментов этих окружностей. Есть решения для расчета площади пересечения двух, трех, четырех окружностей в различных частных случаях.

А вот решения общего случая для пересечения даже трех окружностей уже далеко не так тривиальны. В процессе поиска я нашел даже исследования по расчету площади пересечения N окружностей, однако они настолько же интересны, насколько и сложны.

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

Итак, алгоритм расчета площади любой фигуры методом Монте-Карло сводится к следующему:

  1. Фигура вписывается в прямоугольник. Координаты сторон прямоугольника известны, значит, известна его площадь.
  2. Псевдослучайным образом внутри прямоугольника генерируется большое количество точек. Для каждой точки определяется, попала ли точка внутрь исходной фигуры или нет.
  3. В результате площадь исходной фигуры вычисляется исходя из обычной пропорции: отношение количества точек, попавших в фигуру, к общему количеству сгенерированных точек равно отношению площади фигуры к площади ограничивающего ее прямоугольника.

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

Реализация задачи на JavaScript

Площадь окружности методом монте карло

Пара гвоздей в метод Бутстрапа

Если говорить именно о методе Бутстрапа, то мое личное мнение заключается в том, что случайная генерация набора данных по имеющемуся набору в общем случае не может служить для оценки закономерностей, поскольку сгенерированная информация не является достоверной. В общем, это же, только более умными (и нередко более резкими) словами, говорят и многие авторы, например, Орлов в своем учебнике по Эконометрике.

Видео:Реализация метода Монте Карло расчет площади круга программаСкачать

Реализация метода Монте Карло расчет площади круга программа

Метод Монте-Карло вычисления площадей фигур и его реализация в среде Delphi

В начале урока рассказываю идею метода. Ребята, сегодня мы рассмотрим интересный метод приближенного вычисления площадей фигур – метод Монте – Карло. Пусть у нас есть какая – нибудь фигура на плоскости, площадь которой ( Sfig ) нам необходимо найти. Ограничим ее другой фигурой, площадь которой ( Stotal ) мы можем легко вычислить. Например, прямоугольником АСDB со сторонами, параллельными координатным осям (см. рис. 1). И пусть про любую точку прямоугольника мы можем быстро узнать, попадает эта точка внутрь фигуры, площадь которой мы ищем, или нет.

Площадь окружности методом монте карло

А теперь начнем опыт – будем бросать на бумагу зерна случайным образом (вообще – то это нелегко сделать, чтобы обеспечить случайность). Когда нам покажется, что зерна почти полностью покрыли бумагу, посчитаем, сколько всего зерен на прямоугольнике (пусть их число Ntotal ) и сколько из них на фигуре ( Nfig ). Ясно, что число зерен, попавших внутрь фигуры, пропорционально ее площади: больше площадь – больше зерен, меньше площадь – меньше зерен. Поэтому, поделив количество зерен , попавших внутрь фигуры , на количество всех зерен в прямоугольнике, мы сможем найти, какую часть площади прямоугольника занимает фигура:

Промоделируем этот опыт на ЭВМ. Предположим, нам надо найти площадь фигуры ограниченной сверху кривой Y = F(X), а снизу – осью абсцисс. Пусть Y = cos(X), а Х I [– p /2, p /2] (см. рис. 2). Ограничим нашу фигуру прямоугольником АСDB, его площадь равна p .

Площадь окружности методом монте карло

Из чего должен состоять алгоритм:

1. Бросание зерна – бросание случайной точки, координаты X и Y которой случайны, причем Х должна меняться от – p /2 до p /2, а Y – от 0 до 1. И в этих интервалах X и Y должны появляться с одинаковой вероятностью в любой точке этих отрезков, т.е. X и Y должны быть равномерно распределены по осям. Тут надо напомнить ребятам, как получить равномерно распределенное случайное вещественное число на интервале [А, В]:

Х = random* ( B – A) + A

2. Надо определить, куда попала точка – под кривую или выше нее. И вести подсчет Nfig. Условие попадания точки под кривую: Y ? sin (X).

3. Повторить пп.1 и 2 столько раз, чтобы получить желаемую точность результатов.

Дети без труда напишут программу по данному алгоритму (на практическом занятии). И после этого наступает момент разочарования. Сухие цифры.

Предложение учителя: давайте создадим проект в Delphi, который наглядно демонстрировал бы работу метода Монте – Карло. Разработаем интерфейс программы. Тут ребята сами предлагают несколько вариантов оформления проекта, один из которых представлен на рис. 3.

Разместим на форме следующие компоненты:

Edit – окно редактирования для ввода общего количества испытаний (бросков зерен) – Ntotal;

Button – кнопка для запуска работы метода Монте – Карло;

Panel – панель для вывода посчитанной площади фигуры;

(все вышеперечисленные компоненты расположены на вкладке Standart Палитры компонентов)

Image – для вывода точек, попавших в искомую область (компонент расположен на вкладке Additional Палитры компонентов).

Если необходимо, надо напомнить ребятам некоторые свойства и методы выбранных компонентов (это может быть и домашним заданием предыдущего урока, чтобы не терять время на “воспоминания”) .

Свойство Text – содержит текст, который пользователь набирает в окне Edit. Этот текст надо преобразовать в число Ntotal. Для этого в Delphi есть необходимая функция StrToInt:

Ntotal = StrToInt (Edit1.Text).

Свойство Caption – содержит текст, который выводится на панель. Чтобы вывести полученное число Sfig на панель, мы должны преобразовать его в строку S с помощью процедуры Str:

а потом вывести эту строку на панель следующим образом:

Panel1.Caption := ‘Площадь фигуры = ‘ + S

Свойства Height и Width – соответственно высота и ширина компонента;

Свойство Canvas – отводит канву (место) для рисования на компоненте Image;

FillRect(ClientRect) – закрашивает область клиента компонента Image каким – либо цветом

(по – умолчанию – белым), т.е. стирает предыдущую картинку;

MoveTo(X, Y) – перемещает перо в точку с координатами X, Y без проведения линии (координаты задаются в пикселях);

LineTo(X, Y) – проводит линию из текущей точки в точку с координатами X, Y;

Pixels[I, J] – содержит цвет точки с координатами I, J.

У кнопки (компонент Button) мы будем обрабатывать событие onClick (событие нажатие кнопки). Т.е. вышеописанный алгоритм мы программируем в процедуре Button1Click.

Тут учитель задает вопрос классу: “ Какая проблема возникает при выводе точки на экран (на компонент Image)?” Ответ: расчетные координаты очень малы (0 ? Y ? 1,меньше пикселя, -p /2 ? X ? p /2); а если взять другую кривую Y = F(X), они могут оказаться слишком большими (больше размера компонента Image). Поэтому, при выводе значений функций (графиков) на экран монитора, необходимо преобразовывать расчетные координаты в графические с учетом дискретности растровой сетки монитора, а также предусмотреть возможность автоматического масштабирования функции (графика) по осям координат. Для этого желательно создать отдельную подпрограмму.

Для полного размещения функции (графика) в расчетной области (это область компонента Image) необходимо определить X_min, X_max, Y_min, Y_max – минимальные и максимальные значения по X и по Y соответственно. X_min =А, X_max = В. Как найти Y_min, Y_max.

Коллективно обсуждается следующий алгоритм:

1. Разобьем интервал [А, В] по Х на N равных частей и определим массивы значений аргумента и функции X[i] и Y[i] = F(X[i]), где I = 1..N;
2. Определяем наибольшее Y_max и наименьшее Y_min значения функции в заданном интервале изменения аргумента;
3. Находим коэффициенты масштабирования Kx, Ky при построении графика в заданной области;
4. Т.к. коэффициенты масштабирования Kx, Ky могут отличаться, то выводимый график может искажаться. Устраняем искажения графика;
5. Преобразуем расчетные координаты точки X, Y в графические Xg, Yg. С учетом того, необходимости “переворота” оси Y, которая в координатах монитора направлена сверху вниз.

Листинг программы, реализующей данные алгоритмы представлен в конце статьи. Результат работы программы при разном количестве испытаний представлен на рис. 3, 4.

Площадь окружности методом монте карло
Площадь окружности методом монте карло

Задания для самостоятельной работы:

1. Применить метод Монте – Карло для приближенного вычисления площади фигуры, ограниченной сверху кривой Y = sin (X), при Х I [ 0, p ];
2. Применить метод Монте – Карло для приближенного вычисления числа p . Подсказка: рассмотреть круг единичного радиуса с центром в т. (1, 1). Его площадь и будет равна p .
3. Применить метод Монте – Карло для приближенного вычисления площади фигуры, ограниченной сверху кривой Y = sin (X), при Х I [ 0, 2p ];
4. Применить метод Монте – Карло для приближенного вычисления площадей фигур, представленных на рис. 5 – 7.
Площадь окружности методом монте карло
Площадь окружности методом монте карло
Площадь окружности методом монте карло
5. Доработать проект:

а) организавать проверку правильности ввода информации в поле Edit (чтобы вводились только целые числа);
б) разметить оси и подписать числовые значения.

На последующих уроках, на которых предполагается изучение тем “Вычисление площадей (интегралов) методом трапеций и методом прямоугольников”, можно предложить ребятам доработать проект, поместив на форму дополнительные компоненты Image, Button, Edit, Panel (для каждого численного метода – свои). В окно компонента Edit пользователь будет вводить количество разбиений интервала [А, В] по Х. Таким образом, ребята смогут сравнить и наглядно увидеть работу всех трех численных методов.

unit Monte;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm1 = class(TForm)
Panel1: TPanel;
BitBtn1: TBitBtn;
Edit1: TEdit;
Label1: TLabel;
Image1: TImage;

const A = -Pi/2.0; B = pi/2.0; n = 1000;

var
Form1: TForm1;
N_total:longint;
implementation

Function FUNC(x:real):real;
begin
Func:=Cos(x);
end;

Procedure Graphic( var right, down: integer;
var X_min, X_max, Y_min, Y_max, Kx, Ky: real);
type arr=array[1..n] of real;
var
X, Y: arr; dx: real;
i: integer;
begin
dx:=(B-A)/(n-1);
for i:=1 to n do begin X[i]:=A+dx*(i-1);
Y[i]:=FUNC(X[i]);
end;

X_max:=B; X_min:=A;
Y_max:=Y[1]; Y_min:=Y[1];
for i:=2 to n do begin
if Y_max Y[i] then Y_min:=Y[i];
end;

Видео:МЕТОД МОНТЕ-КАРЛО. КАК ВЫЧИСЛИТЬ ПЛОЩАДЬ КЛЕНОВОГО ЛИСТА?Скачать

МЕТОД МОНТЕ-КАРЛО. КАК ВЫЧИСЛИТЬ ПЛОЩАДЬ КЛЕНОВОГО ЛИСТА?

Вычисление π: моделирование методом Монте-Карло

Площадь окружности методом монте карло

Mar 21, 2020 · 6 min read

Каждый год 14 марта любители математики отмечают День числа пи! Есть много способов вычислить это легендарное число π, которое примерно равно 3,14159…

Обсудим все эти методы и рассмотрим три способа вычисления π с использованием моделирования методом Монте-Карло!

Видео:Вычисление числа ПИ методом Монте-КарлоСкачать

Вычисление числа ПИ методом Монте-Карло

Что такое пи?

Пи — это число, которое выражает отношение длины окружности к её диаметру, приблизительно равное 3,14159…

Нарисуем единичную окружность (т.е. окружность с радиусом 1).

Площадь окружности методом монте карло

Как известно, площадь круга (окружности) равна:

Площадь окружности методом монте карло

Площадь окружности методом монте карло

Для единичной окружности, где r = 1, площадь равна π, а периметр равен 2π. То есть π — это есть одновременно и площадь единичной окружности, и её полупериметр.

Суще с твует великое множество способов вычисления числа π. Помимо детерминистских методов, то есть методов без использования элемента случайности, есть ещё вероятностные методы. Последние объединяются под одним общим названием «моделирование методом Монте-Карло». Прежде чем уходить с головой в математику, разберёмся с тем, что представляет собой моделирование методом Монте-Карло.

Видео:Вычисление числа Пи методом Монте-КарлоСкачать

Вычисление числа Пи методом Монте-Карло

Что такое моделирование методом Монте-Карло?

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

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

Бывает и так, что в моделировании методом Монте-Карло нет никакой необходимости, а просто хочется продемонстрировать всю красоту математики и теории вероятности.

Мне больше нравится третья причина, так что давайте скорее начнём вычислять наше любимое число π! У меня для вас три способа вычисления пи: простой, сложный и неожиданный.

Видео:Что такое метод Монте-Карло (простым языком)Скачать

Что такое метод Монте-Карло (простым языком)

Просто: единичный квадрат и единичная окружность

Рисуем единичный квадрат — такой же, как на рисунке ниже — и наносим, равномерно распределяя по всему квадрату, n точек. Пусть внутри круга с радиусом 1 оказалось m точек этого квадрата. Напомним, что квадрант — это четверть окружности.

Площадь окружности методом монте карло

Дробь m/n определяет отношение площадей квадранта и квадрата, равное 1/4 π.

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

Площадь квадрата, в котором оказался наш квадрант с точками, определяется так:

Площадь окружности методом монте карло

Площадь квадранта определяется так:

Площадь окружности методом монте карло

Используя соотношение этих площадей, находим π:

Площадь окружности методом монте карло

Теперь это отношение площадей умножаем на четыре и получаем π. Например, если из 100 точек 76 оказались внутри четверти окружности, то π будет приблизительно равно:

Площадь окружности методом монте карло

Что ж, неплохо. Теперь нанесём 1 000 точек, 780 из которых внутри четверти окружности, тогда π будет равно:

Площадь окружности методом монте карло

Ещё ближе к истине! Результат будет тем точнее, чем больше точек наносится, пока мы наконец не подберёмся благодаря закону больших чисел к реальному значению π. Вот он наш самый первый и, пожалуй, самый простой — к тому же самый очевидный — метод вычисления π с использованием в расчётах элемента случайности!

Этот способ отлично подходит для общего понимания моделирования методом Монте-Карло. Его без труда могут освоить даже младшие школьники. Обратимся теперь к менее очевидному и математически более сложному способу.

Видео:12.3 Метод Монте Карло 1. "Поколение Python": курс для продвинутых. Курс StepikСкачать

12.3 Метод Монте Карло 1. "Поколение Python": курс для продвинутых. Курс Stepik

2. Средние значения функций

Этот способ очень часто используют при вычислении интегралов, когда вычислительные затраты, связанные с получением точных результатов, слишком велики. Среднее значение непрерывной функции f(x) определяется следующим образом:

Площадь окружности методом монте карло

Мы можем использовать его для вычисления π, потому что для этой функции

📽️ Видео

Интегрирование методом Монте КарлоСкачать

Интегрирование методом Монте Карло

Метод Монте-КарлоСкачать

Метод Монте-Карло

RuleOfThumb - Метод Монте-КарлоСкачать

RuleOfThumb - Метод Монте-Карло

Монте Карло площадь круга ссылка на программу для Casio fx-CG50Скачать

Монте Карло площадь круга ссылка на программу для Casio fx-CG50

УРОК 23. Создание модели методом Монте Карло (11 класс)Скачать

УРОК 23.  Создание модели методом Монте Карло (11 класс)

Метод Монте-КарлоСкачать

Метод Монте-Карло

Площадь круга. Математика 6 класс.Скачать

Площадь круга. Математика 6 класс.

12.3 Метод Монте Карло 2. "Поколение Python": курс для продвинутых. Курс StepikСкачать

12.3 Метод Монте Карло 2. "Поколение Python": курс для продвинутых. Курс Stepik

Лучший способ найти площадь кругаСкачать

Лучший способ найти площадь круга

3.3 Определенный интеграл. Метод Монте-Карло. Часть 1.Скачать

3.3 Определенный интеграл. Метод Монте-Карло. Часть 1.

Как посчитать площадь страны при помощи секундомера? Или что такое метод Монте-КарлоСкачать

Как посчитать площадь страны при помощи секундомера? Или что такое метод Монте-Карло

Длина окружности. Площадь круга - математика 6 классСкачать

Длина окружности. Площадь круга - математика 6 класс

Управление рисками Метод Монте КарлоСкачать

Управление рисками  Метод Монте Карло

Метод Монте-КарлоСкачать

Метод Монте-Карло
Поделиться или сохранить к себе: