Определение площади сложной фигуры с помощью теории вероятностей
Да мало ли зачем. Например, возникла необходимость определить площадь территории на карте. Конечно, можно посмотреть в справочнике или поискать в интернете, но иногда и территории бывают нестандартными — допустим, вы озаботились проблемами лесов в пойме Амазонки и хотите ежемесячно измерять площадь зелёных пятен на фотографиях со спутника. Если вы ботаник (в хорошем смысле слова), то вам может понадобиться измерить площадь листовой поверхности разных сортов одного растения. Или, к примеру, более прозаичная задача — нужно зашпатлевать кусок стены, а банки шпатлёвки хватает только на 1 кв. м. — нужно выяснить, покупать одну банку или раскошелиться на две.
В чём сложность нахождения площади?Конечно, если фигура представляет собой прямоугольник, круг или, что хуже, эллипс, то проблема решается с помощью Google и калькулятора. Но где бы найти формулу, да попроще, для нахождения площади, скажем, такого рисунка?
Теория вероятностей, Ваш выход!Сразу оговорюсь, что теория вероятностей по своей сути не подразумевает точного решения задач. Так будет и в этом случае — если вам нужна космическая точность, то предлагаю копать в сторону методов имитационного моделирования. Если же погрешность в пределах 2-5% вас вполне устраивает, то будет достаточно того же калькулятора, базовых навыков программирования и умения считать до ста.
Суть методаСуть метода проста до банальности. Допустим, мы пасмурным деньком выложили капустный листочек (см. ремарку про биолога выше) на прямоугольный поддон, а поддон выставили под накрапывающий дождик. А потом засекли определённое время (к примеру, пять минут) и посчитали, сколько капелек упало на поддон, а сколько непосредственно на лист. Если принять во внимание, что дождь обычно капает равномерно, то получается простая пропорция — лист во столько раз меньше поддона, во сколько раз на него упало меньше капель дождя, чем на весь поддон.
Возвращаемся к нашей фигуреИтак, как же определить площадь той розовой пятерни? Да очень просто — заключить фигуру в прямоугольные границы и проставить случайным образом много точек. Чем больше, тем лучше (в соответствии с законом больших чисел). А потом подсчитать количество точек, попавших на фигуру.
Я намеренно не обсуждаю вопросы реализации такого алгоритма, потому что вариантов масса. Можно просто закрыть глаза и наугад тыкать шариковой ручкой, а можно действовать более научно — с помощью языков программирования. Например, код на PHP занял у меня не больше 15 строчек, а в результате получилось вот что:
Точки общим числом 300, разумеется, проставлены с помощью генератора случайных чисел. Для удобства подсчета точек я разбил изображение на 36 секторов — теперь нужно подсчитать количество точек, попавших на изображение, в каждом секторе, а результаты сложить. Сведём данные в таблицу (ячейка таблицы соответствует сектору на картинке): 0 4 8 4 0 0 0 7 5 6 0 4 3 6 13 7 8 5 1 10 10 13 7 2 0 2 3 7 10 2 0 0 2 5 3 0 Теперь у нас есть все данные для того, чтобы вычислить площадь розовой пятерни: площадь описанного прямоугольника — 20 см х 20 см = 400 кв. см; количество точек в прямоугольнике — 300; количество точек внутри фигуры (сумма значений из таблицы) — 157; площадь фигуры - 209,33 кв. см.
И насколько это точно?Действительно, осталось определиться с точностью данного метода. Конечно, всё зависит от количества точек, и здесь нужно соблюдать золотую середину — десяти для нашего примера было бы явно недостаточно, а от тысячи слишком рябило бы в глазах. Поэтому попробуем определить погрешность для трёхсот точек и описанного квадрата со стороной 20 см. Для этого возьмём фигуру, площадь которой нам известна заранее. Например, такую:
Результаты заносим в таблицу: 0 6 11 8 5 0 9 15 8 5 13 2 11 8 5 14 13 5 10 11 8 8 4 4 2 14 9 10 4 1 0 3 5 6 0 0
Рассчитываем площадь фигуры: площадь описанного прямоугольника — 20 см х 20 см = 400 кв. см; количество точек в прямоугольнике — 300; количество точек внутри фигуры (сумма значений из таблицы) — 237; площадь фигуры - 316 кв. см.
Нетрудно посчитать, что реальная площадь круга с радиусом 10 см составляет 314,16 кв. см. Таким образом, погрешность метода составила 0,59%, чего в большинстве случаев достаточно для прикладного использования.