кубическая интерполяция с неэквидистантными точками - PullRequest
3 голосов
/ 06 июня 2011

Я пытаюсь создать интерполяцию списка точек.

У меня есть некоторая точка координат (ti, xi), где ti - отметка времени, а xi - связанные значения. Я хочу создать функцию, которая проходит через эти точки и позволяет мне найти значение x, соответствующее обобщенному t, лежащему в интервале.

Я хочу интерполировать их с интерполяцией третьего порядка. Я видел что-то вроде интерполяции Катмулла, но это работает, только если точки xi равноудалены.

Например, здесь http://www.mvps.org/directx/articles/catmull/ вы можете обнаружить, что отметки времени равноудалены, как и здесь http://www.cs.cmu.edu/~462/projects/assn2/assn2/catmullRom.pdf.

Есть какой-нибудь способ применить кубическую интерполяцию с нерегулярными точками?

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Неравномерное расстояние между аргументами не является проблемой, если они все различны.Как вы, вероятно, знаете, если у вас есть четыре различных времени t[i], то существует уникальный полиномиальный интерполант соответствующих значений x[i], имеющий степень не более 3 (кубический или более низкий порядок).

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

Помня о том, что просто найти многочлен - не главное, а скорее оценитьэто в другое время в интервале, есть некоторые программные компромиссы, которые следует учитывать.

Если времена t[i] являются фиксированными, но значения x[i] меняются неоднократно, вы можете быть в достаткеиспользуя метод Лагранжа.Он в основном строит четыре кубических полинома, которые укореняются в трех из четырех точек и дает нормализованное значение 1 в оставшейся точке.Если у вас есть эти четыре полинома, интерполяция значений x[i] - это всего лишь вопрос выбора соответствующей их линейной комбинации.Метод Лагранжа страдает от явления Рунге на краях интервала .

Однако, если времена t[i] продолжают изменяться, или, возможно, вы оцениваете интерполяционный полином для ряда промежуточных точек дляте же самые данные t[i], x[i], тогда разделенные различия Ньютона могут быть лучше.Если важна точность, можно изменить порядок, в котором времена t[i] появляются в таблице разделенных разностей, так что оценка локализуется примерно в самое близкое время к промежуточному времени, когда необходимо значение.

ЭтоНетрудно найти пример кода для метода разделенных разностей Ньютона в Интернете, например, в C ++, Python или Java.

0 голосов
/ 07 июня 2011

Одним из способов может быть наложение наименьших квадратов через точки.Я нашел такой подход здесь надежным и практичным, даже с небольшим количеством точек.

...