Я пытаюсь рассчитать площадь объединения n окружностей в плоскости, когда известно, что все круги имеют одинаковые радиусы и их центры также известны (из всех n кругов). Я пытался следовать методу теории множеств (принцип исключения включения), где мы знаем формулу объединения n множеств. Я просто использовал оператор Ar(), который дает область, т. Е. Ar (A) дает мне площадь A. Сначала я попытался выяснить, с какой окружностью пересекается другой круг (ы) с помощью D < 2R (D = расстояние между центрами двух окружностей), тогда I пытался вычислить площадь пересечения между ними попарно и, следовательно, найти область объединения. Но я застрял за n> 4. Может ли кто-нибудь предоставить soln к этому (необходим soln методом теории множеств). Заранее спасибоПлощадь Союза из n кругов (код MATLAB)
ответ
Если ваша проблема была только для пар кругов, вы будете использовать известный результат о Circle-Circle intersection areas. Здесь дается формула для попарной области между любыми двумя кругами, основанная на стандартной параметризации всех задействованных кругов. Но по мере того, как n
становится большим, формулы для этих областей не известны. Может быть умный способ использовать рекурсию для вычисления формул для пересечения двух окружностей (n=2
), пересечения двух асимметричных форм линз (n=3
), пересечение двух экземпляров любой формы - это пересечение двух асимметричных форм линз (n=4
), и так далее. Если вы можете получить формулы для этих областей, вы всегда можете использовать inclusion-exclusion для определения пересечения. Ключевым понятием является то, что пересечение n
экземпляров предыдущей формы действительно является пересечением n-1
экземпляров пересечений предыдущей формы. Но, как сказал выше комментатор, этот вопрос действительно принадлежит Math Overflow.
Практическая Помимо
Для тех, кто читает, кто интересуется практическим способом решения этой проблемы, интеграция Монте-Карло является отличным выбором. Все, что вам нужно сделать, это вычислить большой прямоугольник, который ограничивает все круги, а затем равномерно рисует точки в этом прямоугольнике. Для каждого круга проверьте, находится ли точка внутри или снаружи. Если он когда-либо внутри, то увеличивайте счетчик и выходите из проверки. В конце, доля этого счетчика к общему количеству набранных точек, умноженная на площадь прямоугольника, даст площадь.
Если мы предположим, что для каждого n
-wise области пересечения, мы должны сделать n
различные O(1)
шаги (предполагается, что мы получим аналитическую формулу, мы можем просто заткнуть радиусами и центра обработки данных прямо в, что может быть оптимистичным), то этот аналитический метод по-прежнему O(n^2)
.
Монте-Карло хуже, O(Mn)
где M
это количество точек мы извлекли, если мы делаем пессимистическое предположение, что мы должны проверить против всех n
кругов для каждой точки. Для умеренного n
, в то время как M
не должен быть трудноразрешимым, он определенно не будет близок к n
. Однако мы получаем дополнительное преимущество, которое наша функция автоматически обобщает на случай смешанных радиусов (для которых общее решение намного сложнее). С точки зрения практиков, аналитическое решение здесь не очень полезно, если круги не пересекаются, а ограничивающий прямоугольник содержит большое количество пустого пространства.
- 1. MATLAB: площадь под перекрывающихся кругов
- 2. Найдите несколько кругов, которые имеют общую площадь перекрытия в MATLAB
- 3. Периметр союза N прямоугольников
- 4. Площадь и периметр фигуры, сделанной из перекрывающихся кругов
- 5. Найти максимальную площадь (MatLab)
- 6. Shading Площадь в Matlab
- 7. Пересечение 'n' кругов
- 8. Java-код - площадь многоугольника
- 9. Площадь BoundingBox matlab
- 10. Площадь Расчет участка Surf в MATLAB
- 11. Площадь квадратного участка в Matlab
- 12. Matlab: создать близко упакованный слой кругов
- 13. MATLAB: как вычислить «определитель» из матрицы N * N в MATLAB
- 14. Сэмплирование равномерно из многих кругов на сфере эффективно в matlab
- 15. Использование функции MatLab «Союза» в цикле
- 16. производящих C++ код из MATLAB
- 17. Тень вертикальной полосы Площадь на участке MATLAB
- 18. MATLAB вычислить площадь фигуры на графике
- 19. Обрезать наибольшую площадь внутри объекта круга - Matlab
- 20. Рисование кругов на торе в matlab
- 21. Результаты Союза из подвыборки
- 22. K-окружение Минимальная площадь Площадь
- 23. Площадь поверхности и код объема тетраэдра Java
- 24. MATLAB: Площадь и центр масс рисунка
- 25. Заполните площадь под кривой в Matlab plot3
- 26. Площадь штриховки между двумя символическими кривыми matlab
- 27. Окраска строки из кругов
- 28. Реализация детерминированного алгоритма Шарира или Ауренхаммера для вычисления пересечения/объединения кругов N N
- 29. тангенс из двух кругов
- 30. Комбинированная область перекрывающихся кругов
Существует аналогичный вопрос (http://stackoverflow.com/questions/1667310/combined-area-of-overlapping-circles), а не только для Matlab. Тем не менее, все ответы там либо неполные, ни кода, ни приближения. – cyborg
Я уже проверил этот пост, это было довольно неубедительно, так сказать – Saptarshi
Думаю, вам стоит подумать о том, чтобы задать вопрос об использовании Math stack exchange. –