VBA Как решить два уравнения с двумя неизвестными - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь вычислить точку на линии.Я получил точки ребер и одно расстояние от одного ребра до точки, которую я хочу найти (то есть B).

A (2,4)В (х, у)C (4,32)

Расстояние между A и B равно 5.

Как рассчитать Bx и By?используя следующие уравнения:

d = Math.Sqr((Bx-Ax)^2 + (By-Ay)^2)
d = Math.Sqr((Cx-Bx)^2 + (Cy-By)^2)

и затем сравните уравнения выше.

Вот уравнения с расположенными точками:

5 = Math.Sqr((Bx-2)^2 + (By-4)^2)
23.0713366 = Math.Sqr((4-Bx)^2 + (32-By)^2)

или

Math.Sqr((Bx-2)^2 + (By-4)^2) - 5 = Math.Sqr((4-Bx)^2 + (32-By)^2) - 23.0713377

Как я могу решить эту проблему с помощью VBA?


Спасибо!

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Я не буду решать ваши уравнения выше, потому что они являются излишне сложным способом постановки задачи (а наличие решения сомнительно при наличии округления), но все точки на линии A=(Ax,Ay) до C=(Cx,Cy) можно описать как B=(Ax,Ay) + t*(Cx-Ax,Cy-Ay) с t между 0 и 1.

Расстояние между B и A определяется как d=t*Sqrt((Cx-Ax)^2+(Cy-Ay)^2), которое вы можете инвертировать, чтобы получить t для данного d - t=d/Sqrt((Cx-Ax)^2+(Cy-Ay)^2)

В вашем случае B(t) = (2,4) + t*(2,28), t=5/Sqrt(2^2+28^2) ~ 0.178 -> B ~ (2,4) + 0.178 * (2,28) ~ (2.356, 8.987).

0 голосов
/ 28 сентября 2011

VBA не поддерживает символьный язык . Для решения этой проблемы существует другой подход:

  1. Преобразуйте уравнения, чтобы выделить одно из неизвестных, наиболее вероятное использование подстановки, и вычислить его (я рекомендую это для вашей задачи.)
  2. Преобразование ваших функций и вывод их для использования Методы Ньютона (не делайте этого, это излишне.)
  3. Используйте методы конвергенции "грубой силы": исправьте мин / макс для каждой переменной и используйте методы деления пополам , чтобы найти то, что вы хотите (я не рекомендую это, потому что вы, скорее всего, упадете) "в локальный минимум / максимум в вашем случае.)

Так что, в принципе, я бы сказал, что вы идете первым путем. Требуется 15 минут работы с математическими уравнениями, и вы готовы к работе.

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