Площадь Союза из n кругов (код MATLAB) - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь вычислить площадь объединения n окружностей на плоскости, когда известно, что все окружности имеют одинаковые радиусы и их центры также известны (из всех n окружностей).Я пытался следовать подходу теории множеств (принцип включения-исключения), где мы знаем формулу для объединения n множеств.Я просто использовал оператор Ar (), который дает площадь, т.е. Ar (A) дает мне площадь A. Сначала я попытался выяснить, какой круг пересекается с какими другими кругами с помощью D <2R(D = dist между центрами двух окружностей), тогда я пытался вычислить площадь пересечения между ними попарно и, следовательно, найти область объединения.Но я застреваю при n> 4.Может ли кто-нибудь предоставить для этого soln (необходимо использовать подход теории множеств).Заранее спасибо

1 Ответ

1 голос
/ 08 февраля 2012

Если ваша задача была только для пар окружностей, вы будете использовать известный результат о областях пересечения окружности-круга .Здесь дается формула для парной области между любыми двумя окружностями, основанная на стандартной параметризации всех задействованных окружностей.Но когда n становится большим, формулы для этих областей широко не известны.Там может быть умный способ использовать рекурсию для вычисления формул для пересечения двух окружностей (n=2), пересечение двух асимметричных форм линз (n=3), пересечение двух экземпляров любой формы является пересечениемдве асимметричные формы линз (n=4) и т. д.Если вы можете получить формулы для этих областей, вы всегда можете использовать включение-исключение , чтобы выяснить пересечение.Ключевым моментом является то, что пересечение n экземпляров предыдущей фигуры действительно является пересечением n-1 экземпляров пересечений предыдущей фигуры.Но, как сказал вышеупомянутый комментатор, этот вопрос действительно принадлежит Math Overflow.

Практическое пособие

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

Если мы предположим, что для каждой n -положительной области пересечения нам понадобитсячтобы сделать n различных O(1) шагов (при условии, что мы получим аналитическую формулу, в которую мы можем просто вставить радиусы и центральные данные прямо, что может быть оптимистичным), тогда этот аналитический метод все еще O(n^2).

Монте-Карло хуже, O(Mn), где M - это количество точек, которые мы рисуем, если мы сделаем пессимистическое предположение, что мы должны проверять все круги n для каждой точки.Для умеренных n, хотя M не обязательно должно быть слишком большим, оно определенно не будет близко к n.Однако мы получаем дополнительное преимущество, которое наша функция автоматически обобщает на случай смешанных радиусов (для которых общее решение намного сложнее).С точки зрения практикующего врача, аналитическое решение здесь не очень полезно, если только круги почти не перекрываются, а ограничивающий прямоугольник содержит большое количество пустого пространства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...