и (1,0)

реклама
ВЕРОЯТНОСТНЫЕ
МОДЕЛИ
МЕТОД МОНТЕ-КАРЛО
Вероятностные модели
• Вероятностные модели базируются на
использовании серий испытаний со
случайными параметрами.
• Точность зависит от количества
испытаний.
Где находится
Монте-Карло?
Предположите, какое отношение
город Монте- Карло имеет к
вероятностным моделям?
Само название «МонтеКарло» происходит от города
Монте-Карло в княжестве
Монако, знаменитого своим
игорным домом. Дело в том,
что одним из простейших
механических приборов для
получения случайных
величин является рулетка…
Цель:
• Построить модель,
приближенно вычисляющую
площадь геометрической
фигуры
Пример
Нам нужно вычислить площадь
плоской фигуры S. Это может быть
совсем произвольная фигура с
криволинейной границей, заданная
графически или аналитически.
Y
1
N1
N=40 точек
S
Из них
N1 =12 внутри фигуры S
N1/N=12/40= 0,30.
N
1X
В то время как истинная площадь
S=0,35.
Две особенности Метода МонтеКарло:
Пример из
жизни
ОПИСАТЕЛЬНАЯ
МОДЕЛЬ
• Пример:Детская
•
• Если собрать снег с площадки
площадка располагается
отдельно, а потом весь снег во
во дворе квадратной
дворе и взвесить его, то
полученное отношение
формы
приблизительно равно отношению
Выпал снег и снежинки
площади площадки и двора
равномерным слоем
покрыли поверхность
двора и площадки
Будем строить модель вычисления
площади круга, вписанного в
квадрат. Какой первый этап?
ОПИСАТЕЛЬНАЯ МОДЕЛЬ
МЕТОДА МОНТЕ-КАРЛО:
-поместим геометрическую фигуру полностью
внутрь квадрата;
- будем случайным образом «бросать» точки в
этот квадрат, то есть с помощью генератора
случайных чисел задавать точкам координаты
внутри квадрата;
- будем считать, что отношение числа точек,
попавших внутрь фигуры, к общему числу точек в
квадрате приблизительно равно отношению
площади фигуры к площади квадрата, причём это
отношение тем точнее, чем больше количество
точек.
• Какой второй этап?
Формализуем
задачу
R
X
-R
Круг вписан в квадрат со
стороной 2R
Площадь квадрата
вычисляется по формуле:
Sкв=4R2
ФОРМАЛЬНАЯ
МОДЕЛЬ:
Y
R
X
-R
М – количество точек
попавших внутрь
круга(красные);
N – количество точек, которые
M

случайно генерируются внутри
N S rd
квадрата(сумма красных и
Sкр=Sкв*M/N синих).
S кр
Круг вписан в квадрат со стороной 2R, площадь
которого вычисляется по формуле:
2
Sкв=4R
Случайный выбор координат точек, которые попадают
внутрь квадрата (N точек), должен производиться так,
чтобы координаты точек x и y удовлетворяли
условиям:
-R<=x<=R
и
-R<=y<=R
Координаты точек, попавших внутрь круга (М),
удовлетворяют условию:
x2 + y2 <= R2
Тогда площадь круга можно вычислить по формуле:
S=4R2* M / N
Компьютерная модель
• Проблема 1
Как сгенерировать
внутри квадрата?
• Проблема 2
Как осуществить
внутрь круга?
случайные числа
x:=Random*4-2;
y:=Random*4-2;
Random функция real возвращает
случайное вещественное в диапазоне
[0..1)
отбор точек попавших
If (x*x+y*y<4) then k:=k+1;
Program Monte_Karlo;
Var S,x,y: real;
i,M,N: longint;
begin
Writeln(‘Введите количество точек N:');
Readln(N);
Работа
Randomize;
программы
M:=0;
при
различных N
For i:=1 to N do
различна.
N=1000000
begin
N=10000000
x:=Random*4-2;
N=100000000
y:=Random*4-2;
If (x*x+y*y<4) then M:=M+1; end;
S:=16*M/N;
Writeln('S=',S:2:5);
end.
Почему с возрастанием количества
случайных точек возрастает точность
вычисления площади фигуры?
Меньше ошибка, она обратно
пропорциональна корню квадратному из
числа измерений.
Можно ли с помощью метода МонтеКарло определить площадь
треугольника, вершины которого
имеют координаты
(-1,0); (0, 1) и (1,0)?
Площадь произвольной фигуры?
Задание:
y
1
-1
0
1
x
Определить методом
Монте-Карло площадь
треугольника, вершины
которого имеют
координаты
(-1,0); (0, 1) и (1,0).
Замечание:
1. Функция генерации случайных чисел работает так:
если дать команду f= rnd(), то в переменную f будут
попадать числа из интервала [0, 1].
2. Условие попадания точек внутрь треугольника :
dblY>=0 и ABS(dblX) + ABS(dblY)<=1
Задание на дом:
§ 1.4.1
Написать программу:
Определить методом МонтеКарло площадь треугольника,
вершины которого имеют
координаты
(-1,0); (0, 1) и (1,0).
Работа программы:
Пример 1.
Введите N: 1000000
S=6.68218
Пример 2.
Введите N: 10000000
S=6.67204
Пример 3.
Введите N: 100000000
S=6.66691
Скачать