Это на самом деле не так сложно, учитывая Decription здесь: http://mathworld.wolfram.com/Circle-CircleIntersection.html
Предлагаемый алгоритм:
- Найти х - как описано в ссылке.
- Рассчитать y.
Оба должны быть выполнены с использованием любых 2 кругов.
- Подключите точки (x, y) и (x, -y) в 3 окружности.
- Решение состоит в том, что все три круга пересекаются по адресу: x, y x, -y или совсем нет.
Еще одно предложение ... я прочитал еще раз свой вопрос, и понял, что вы не хотите найти точка это сам ...
Однако, если вы рисуете все 9 кругов на бумаге (3 пересекающихся, плюс 2 меньше и больше для r + e и re, где e - ошибка), вы замечаете следующее. Ваша точка пересечения лежит внутри многоугольника. Вы можетелегко вычислить вершины этого многоугольника. И тогда ваша проблема будет либо: найти точку в полигоне. Или вы пишете функцию возражения, которая находит эти вершины, а затем вы минимизируете эту область.
Чтобы увидеть, что я имею в виду о кружках, запустите:
# excuse me for the ugly code ...
import pylab
pylab.axes()
cir = pylab.Circle((1,0), radius=1, alpha =.2, fc='b')
cir1 = pylab.Circle((1,0), radius=0.9, alpha =.2, fc='b')
cir2 = pylab.Circle((1,0), radius=1.1, alpha =.2, fc='b')
cir3 = pylab.Circle((-1,0), radius=1, alpha =.2, fc='b')
cir4 = pylab.Circle((-1,0), radius=0.9, alpha =.2, fc='b')
cir5 = pylab.Circle((-1,0), radius=1.1, alpha =.2, fc='b')
cir6 = pylab.Circle((0,-1), radius=0.9, alpha =.2, fc='b')
cir7 = pylab.Circle((0,-1), radius=1.1, alpha =.2, fc='b')
cir8 = pylab.Circle((0,-1), radius=1, alpha =.2, fc='b')
pylab.gca().add_patch(cir)
pylab.gca().add_patch(cir1)
pylab.gca().add_patch(cir2)
pylab.gca().add_patch(cir3)
pylab.gca().add_patch(cir4)
pylab.gca().add_patch(cir5)
pylab.gca().add_patch(cir6)
pylab.gca().add_patch(cir7)
pylab.gca().add_patch(cir8)
pylab.axis('scaled')
pylab.show()
Это 99% -ный численный анализ, 1% программирование. Я думаю, вам будет лучше спросить на сайте [math] (http://www.math.stackexchange.com) –
Какова функция ошибки, которую вы пытаетесь свести к минимуму? Каковы константы (x1, x2, x3, y1, y2, y3, u?) И каковы параметры (r, x и y?) И каковы ограничения (ru
unutbu
(x1, y1), (x2, y2), (x3, y3) - центры трех окружностей с радиусами в интервала r1 + -u1, r2 + -u2, r3 + -u3. Чем меньше неуверенность в радиусе круга, тем ближе требуемая точка (x/y) должна быть к этому кругу. – user1027861