Помогите найти библиотеку для решения систем нелинейных уравнений

Можно сделать ограничение, что пользователь не может быть выше “Спутников”

ну пробуйте. В любом случае легко не будет

Откуда шесть окружностей?

абсолютно верно, это только скейч (с) в реальности все сложнее, и за бесплатно…

Легко никогда не было, не есть и не будет

число возможных пар для четырех точек

Готовый скетч мне ни к чему. Вы навели меня на мысли и подсказали где копать. За это уже огромное спасибо. А то встрял намертво.

Учитывайте еще неточность измерений. В реальном мире данные могут и “не сойтись” (окружности не пересекутся) и точки не получится

есть чудесная галочка вопрос решен, в любом сучае выч мощностей уны не хватит, может дуе потянет

что значит “адаптивными” ?

Возможность быстрой настройки системы под области различных размеров

Тут я как-нибудь выкручусь, и точности удовлетворительной добьюсь)
Спасибо всем запомощь!

Под размеры это не сложно - обычное масштабирование. А вот если взаимное расположение “излучателей” меняется - то это сложно.
Проще предусмотреть расположение “излучателей” по заранее запланированной схеме, и эту готовую схему уже встраивать в разные пространства
Думаю что таблица - оптимальный метод, тут и Уна справится вполне

как-нибудь - очень не надежный путь

Ладно, дам этой идее шанс)

И где же это “подробнее”?
Задача как была, так и осталась в общем виде.
Где конкретная геометрия?
Где конкретные размеры?
Где конкретные погрешности?

По поводу общего вида, я бы для начала попытался сделать так:
Всего точек, как я понял, 4.
Для каждой пары точек можно найти окружность. Но нам нужна не окружность, а достаточно плоскости, в которой лежит эта окружность. Таких плоскостей 6.
Теперь берем эти плоскости по 3 штуки и для каждой тройки вычисляем точку пересечения.
Часть этих точек пределах погрешности и является искомой точкой. Тем или иным способом вычисляем среднее и получаем искомое.

Грубая оценка:
Одна операция с плавающей точкой - порядка 200 тактов на AVR, т.е. 12 мкс.
Надо выполнить весь расчет за 200000 мкс.
Т.е. нам нужно уложиться примерно в 16000 операций.
Мне кажется, вполне реально.

На всякий случай повторю: это делается градиентным спуском. На практике. В системах, над которыми работали десятки гениальных спецов.

Я поясню, про спуск. Лаконичность коллеги вызывает смешанные чувства! ;))

Гр. спуском ищут минимумы и максимумы. Опишу, причем тут задача.

  1. Ищем минимум функции ошибки [ сумма квадратов разностей расстояния от проверяемой точки до опорной точки и измеренного, по всем опорным ].
  2. следующую точку выбираем по направлению обратному (мы ж минимум ищем) градиенту функции ошибки. На практике мы либо накапливаем данные градиента в процессе, или просто перебираем несколько соседних и выбираем ту, что “лучше”.
  3. и так до достижения оргазма! В том смысле, что до тех пор, пока функция ошибки не станет ниже порога решения.
  4. первую точку, при включении “адской машины” выбираем произвольно, в соответствии с задачей. Потом - начальной точкой является предыдущее положение. Поэтому первый “холодны” старт будет несколько дольше последующих вычислений.

Искусством является выбор функции ошибки, чтобы считать было легче и чтобы ложных минимумов не было у нее в интересующей области. Тут стоит всё-таки почитать профильные работы.

1 лайк

А не проще ли из системы НЕЛИНЕЙНЫХ уравнений получить систему ЛИНЕЙНЫХ уравнений и решить ее известными способами?
Как я понимаю, у нас есть 4 уравнения вида:

(Xn - X)^2 + (Yn - Y)^2 + (Zn - Z)^2 = Ln^2
где n=0,1,2,3

Вычитаем из уравнения 0 все остальные. Получаем систему из 3 линейных уравнений:

2(Xn-X0)X+2(Yn-Y0)Y+2(Zn-Z0)Z=L0^2-Ln^2+Xn^2-X0^2+Yn^2-Y0^2+Zn^2-Z0^2
где n=1,2,3

Решаем ее каким-нить методом: Крамера или Гаусса.

продашь? грибной супчик давно не пробовал, у нас они встречаются но крайне редко и…здесь растёт сатанинский гриб, очень на белые похож…