ВЕРОЯТНОСТНЫЕ МОДЕЛИ МЕТОД МОНТЕ-КАРЛО Вероятностные модели • Вероятностные модели базируются на использовании серий испытаний со случайными параметрами. • Точность зависит от количества испытаний. Где находится Монте-Карло? Предположите, какое отношение город Монте- Карло имеет к вероятностным моделям? Само название «МонтеКарло» происходит от города Монте-Карло в княжестве Монако, знаменитого своим игорным домом. Дело в том, что одним из простейших механических приборов для получения случайных величин является рулетка… Цель: • Построить модель, приближенно вычисляющую площадь геометрической фигуры Пример Нам нужно вычислить площадь плоской фигуры 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