Неравномерное расстояние между аргументами не является проблемой, если они все различны.Как вы, вероятно, знаете, если у вас есть четыре различных времени t[i]
, то существует уникальный полиномиальный интерполант соответствующих значений x[i]
, имеющий степень не более 3 (кубический или более низкий порядок).
Существует два основныхподходы к вычислению интерполяции, разделенных разностей Ньютона и метод интерполяции Лагранжа .
Помня о том, что просто найти многочлен - не главное, а скорее оценитьэто в другое время в интервале, есть некоторые программные компромиссы, которые следует учитывать.
Если времена t[i]
являются фиксированными, но значения x[i]
меняются неоднократно, вы можете быть в достаткеиспользуя метод Лагранжа.Он в основном строит четыре кубических полинома, которые укореняются в трех из четырех точек и дает нормализованное значение 1 в оставшейся точке.Если у вас есть эти четыре полинома, интерполяция значений x[i]
- это всего лишь вопрос выбора соответствующей их линейной комбинации.Метод Лагранжа страдает от явления Рунге на краях интервала .
Однако, если времена t[i]
продолжают изменяться, или, возможно, вы оцениваете интерполяционный полином для ряда промежуточных точек дляте же самые данные t[i], x[i]
, тогда разделенные различия Ньютона могут быть лучше.Если важна точность, можно изменить порядок, в котором времена t[i]
появляются в таблице разделенных разностей, так что оценка локализуется примерно в самое близкое время к промежуточному времени, когда необходимо значение.
ЭтоНетрудно найти пример кода для метода разделенных разностей Ньютона в Интернете, например, в C ++, Python или Java.