Рассчитать длину дуги кусочно-кубического сплайна?

Я хотел бы рассчитать длину дуги уже интерполированного кусочно-кубического сплайна, где каждый сегмент определяется нормальным кубическим полиномом ax^3 + bx^2 + cx + d. Однако я не уверен, какой маршрут лучше выбрать.

Моя первая идея состоит в том, чтобы использовать численное интегрирование и следующую формулу длины дуги, чтобы вычислить длину дуги для каждого сегмента, а затем суммировать их: https://tutorial.math.lamar.edu/classes/calcii/arclength.aspx

Я не уверен, что это лучший подход, так как у меня минимальный опыт в числовой интеграции. Если это правильный подход, какой метод числового интегрирования следует использовать? Если нет, то как я могу это сделать?

Большое спасибо


person Gary Allen    schedule 18.01.2021    source источник
comment
Думали ли вы о своем базовом варианте как о чем-то вроде (псевдо-матлаб) dp = polyder([a,b,c,d]); ds = @(x) (1+polyval(dp,x).^2).^0.5; s=quad(ds,0,1);   -  person Lutz Lehmann    schedule 18.01.2021
comment
Я не совсем понимаю, о чем вы спрашиваете, извините. Я не слишком знаком с матлабом. Я программирую вышеперечисленное на C @LutzLehmann   -  person Gary Allen    schedule 18.01.2021
comment
polyder преобразует последовательность коэффициентов в производную, polyval вычисляет заданный полином в заданной точке по схеме Горнера, @ определяет функцию из выражения на лету, quad реализует метод адаптивных квадратур, я не уверен если полная интеграция Ромберга или адаптивное (составное) правило Симпсона. В принципе, вы можете реализовать все части как C процедуры (или найти реализации для копирования, это все довольно стандартные задачи) и скомпоновать их таким образом.   -  person Lutz Lehmann    schedule 18.01.2021
comment


Ответы (1)


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

Численный метод полилинейной аппроксимацией (как в ссылке) слишком элементарный. Для такой гладкой функции подойдет правило Симпсона. https://en.wikipedia.org/wiki/Simpson%27s_rule

person Yves Daoust    schedule 21.01.2021
comment
На самом деле это именно то решение, к которому я пришел. Спасибо! - person Gary Allen; 21.01.2021