Решение 6 нелинейных уравнений для 6 переменных не работает - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь решить систему из 6 нелинейных уравнений для 6 переменных, но ноутбук непрерывно работает в течение 2 дней. Что я делаю не так? (Блокнот прилагается)

exp1 = ExpandAll[(xd1 - x1)^2 + (yd1 - y1)^2 + z1^2 == h1^2];
exp2 = ExpandAll[(xd2 - x2)^2 + (yd2 - y2)^2 + z2^2 == h2^2];
exp3 = ExpandAll[(xd3 - x3)^2 + (yd3 - y3)^2 + z3^2 == h3^2];
exp4 = ExpandAll[((x1 - x2)^2 + (y1 - y2)^2 + (z1 - z2)^2)^(1/2) + ((x2 - x3)^2 + (y2 -y3)^2 + (z2 - z3)^2)^(1/2) == ((x1 - x3)^2 + (y1 - y3)^2 + (z1 - z3)^2)^(1/2)];
exp5 = ExpandAll[((z2 - z1)/(((x1 - x2)^2 + (y1 - y2)^2 + (z1 - z2)^2)^(1/2))) == ((z3 - z2)/(((x2 - x3)^2 + (y2 - y3)^2 + (z2 - z3)^2)^(1/2)))];
exp6 = ExpandAll[((z3 - z1)/(((x1 - x3)^2 + (y1 - y3)^2 + (z1 - z3)^2)^(1/2))) == ((z3 - z2)/(((x2 - x3)^2 + (y2 - y3)^2 + (z2 - z3)^2)^(1/2)))];

NSolve[{exp1, exp2, exp3, exp4, exp5, exp6}, {x1, y1, x2, y2, x3, y3}, Reals]

1 Ответ

2 голосов
/ 17 июня 2020

( Не ответ, но слишком длинный для комментария .)

Пусть xk, yk, zk определит точку Pk, затем в случае равенства неравенства треугольника exp4 означает, что три точки P1, P2, P3 коллинеарны, а P2 находится между P1 и P3.

Это эквивалентно P2 = a P1 + (1-a) P3 для некоторых a ∈ [0,1], и в этом случае exp5 и Далее следует exp6, поэтому два последних уравнения являются избыточными.

Тогда отношение a может быть определено из координат zk как a = (z3 - z2) / (z3 - z1). Когда вычисленное a попадает в допустимый интервал [0,1], остаются следующие уравнения:

  (xd1 - x1)^2 + (yd1 - y1)^2 + z1^2 == h1^2
  (xd2 - a x1 - (1-a) x3)^2 + (yd2 - a y1 - (1-a) y3)^2 + z2^2 == h2^2
  (xd3 - x3)^2 + (yd3 - y3)^2 + z3^2 == h3^2

Это система из 3-х уравнений с 4-мя неизвестными {x1, y1, x3, y3}. В общем случае у него может быть ни одного, несколько или бесконечно много решений, хотя это не обязательно удобно для расчета.

...