Как отделить корни для системы нелинейных уравнений аналитическим методом
Я хочу рисовать треугольники в Windows forms зная длины трех сторон. Для того, чтобы его нарисовать нужно три точки. Две из них есть: (0,0) и (Длинна одной из сторон(l1), 0). Задача найти третью. Ее координаты есть пересечение двух окружностей: одна с центром (0,0) и радиусом l2(Длинна любой из оставшихся сторон), а вторая с центром в (l1, 0) и радиусом l3(Последняя сторона). Получим систему:
y^2 + x^2 = l2^2
y^2 + (x - l1)^2 = l3^2
У системы два корня, нужен с положительной ординатой. Я решаю ее методом Ньютона, но работает (разумеется) только с должным приближением к этому корню. А как найти приближение численно ума не приложу. Для одного НУ проще некуда, а для СНУ понятия не имею, прошу помощи в этом вопросе.
Ответы (1 шт):
Никаких приближений же не нужно. Перепишу с другими обозначениями, поскольку эти l* нечитабельны
Пусть длины а, b, c
Координаты (0,0), (a,0), (x,y)
x^2 + y^2 = b^2
(a-x)^2 + y^2 = c^2
y^2 = b^2 - x^2
(a-x)^2 + b^2 - x^2 = c^2
a^2 - 2ax + b^2 = c^2
x = (a^2 + b^2 - c^2) / 2a
y = + sqrt(b^2 - x^2)