У меня есть параметризованный 2D кривой: (х, у) = F (T)Нахождение местоположения заданной дуги расстояния вдоль параметризованного кривой в Python
функция Р произвольно, но дифференцируемы и, следовательно, смогу выведите длину дифференциальной дуги ds вдоль кривой в любой точке, используя стандартные формулы. Я также могу получить полную длину дуги S (t) от начала до любой точки на кривой, численно интегрируя формулу длины дифференциальной дуги. Я могу контролировать точность вычисления.
Я хочу найти точку (x, y), которая имеет полную длину дуги S = D от начала кривой. Еще лучше, если реализация была в python. Я буду делать это много раз, и это часть вычислительного приложения, где мне нужен жесткий контроль точности и некоторая уверенность в конвергенции.
Я не знаю, подходит ли поиск корня, но мой вопрос является эквивалентом проблемы поиска корней для g (t) = S (t) - D, где функция g (t) не вычисляется точно так как S (t) нет. Оценка неточной функции беспорядочна не только с точностью, но и монотонностью g (t). С самого начала я старался делать плотную численную интеграцию, но навсегда. Я уверен, что сходится к моей требуемой толерантности, алгоритм поиска корней должен был бы лениво контролировать точность интеграции, когда он продолжался, требуя небрежной оценки с самого начала и повышения точности по мере сглаживания корневого алгоритма.
Есть ли такая вещь в наличии? Есть ли альтернативный умный способ сделать это?
Цените помощь
Просто пытаясь понять ситуацию: t - это время? Вашими известными являются: время начала, начальная позиция, время окончания и конечная кривая (t0, x0, y0, tF, S (tF) = D). Вы хотите найти конечные позиции для этого перемещения, (xF, yF). Можете ли вы написать кривую как явную функцию по x, т. Е. Y = h (x)? – fraxel
Hi fraxel: t - это просто фиктивная переменная, параметризующая кривую. Я не думаю, что это вредит, думая об этом как о времени. Кстати, я думаю, что HYRY помог мне опубликовать код, который точно иллюстрирует мой подход. –
Но .. вы можете устранить t и получить явную функцию по x, т. Е. Y = h (x)? (возможно, вы можете) Если так, у меня может быть классный способ сделать это. – fraxel