Pull to refresh

Comments 16

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

ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%9C%D0%BE%D0%BD%D1%82%D0%B5-%D0%9A%D0%B0%D1%80%D0%BB%D0%BE
Когда-то давно метод Монте-Карло вдохновил меня на замечательную задачу — определить площадь выпуклого многоугольника, имея только функцию определения, принадлежит ли точка многоугольнику. Точность у лучших решений получилась вполне космическая :-)
Точность метода можно оценить математически, без использования круга :)
Давайте параметры генератора случайных чисел — вид распределения, дисперсию и т.д. — оценим :)

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

Погрешность должна быть в разы больше и сходится метод будет много дольше.

А вообще, погрешность обратно пропорциональна корню из количества испытаний. Но тут не надо забывать, что для генерации точки мы дважды напрягаем генератор.
Ну, имхо, распределение тут равномерное без вариантов. Пример с кругом показывает вархнюю границу, конечно, но так же вероятностно. Оценки погрешности оценки уже тут я не знаю как сделать, надо подумать)
Считаем, что генератор случайных чисел идеален — точки равномерно распределены по квадратам и независимы друг от друга.

Пусть площадь фигуры S, площадь большого квадрата, в который бросаются точки, S0, и s = S/S0. С вероятностью s точка попадает внутрь фигуры, с вероятностью 1-s — вовне. Рассмотрим случайную величину, равную 1, если точка попала внутрь фигуры, и 0 иначе; по определению её матожидание равно s, а дисперсия s(1-s).

Пусть бросается N точек. Алгоритм выдаёт в качестве оценки площади среднее значение N независимых случайных величин, описанных в предыдущем абзаце. По центральной предельной теореме при больших N это среднее значение распределено примерно как нормальная случайная величина с матожиданием s и дисперсией s(1-s)/N.

Ясно, что поскольку алгоритм случайный, ему в принципе может фатально не повезти, если все точки случайно окажутся в странных местах, но такое событие исключительно маловероятно. Будем для определённости считать, что события с вероятностью <1% на практике не происходят; число, естественно, можно менять. По формуле вероятности для нормальной случайной величины при больших N отклонение результата, выданного алгоритмом, от правильного значения s по модулю не превосходит

InverseErf(0.995)*sqrt(s(1-s)/N)

в синтаксисе Mathematica, который можно использовать на wolframalpha.com; 0.995, потому что с вероятностью 0.005 отклонение будет больше по модулю и положительно и с вероятностью 0.005 отклонение будет больше по модулю и отрицательно — в сумме получается 1%, на который мы договорились забить. Учитывая, что InverseErf(0.995) примерно равно 2, это даёт возможную абсолютную погрешность метода.
Поправка: нужно ещё не забыть умножить на площадь большого квадрата S0, так что после подстановки s=S/S0 окончательная формула выглядит так:
InverseErf(0.995)*sqrt(S(S0-S)/N).
А ещё лучше вместо генератора случайных чисел (который может быть неравномерен) использовать проход по циклу (for x=0 to width step delta for y=0 to height step delta). На него точно можно надеяться.
Фигура может быть как расчёска и тогда проход по циклу может попасть или точно между грубнями, или точно в гребни. Результат — совершенно противоположный.
UFO just landed and posted this here
А как вы будете учитывать перспективу фотографии? Заявить, что фотографировать надо строго перпендикулярно с расстояния в два метра?
UFO just landed and posted this here
UFO just landed and posted this here
Коробок спичечный к стене жвачкой прилепить, а дальше сравнением с эталоном ;)
Sign up to leave a comment.

Articles

Change theme settings