Математика / Интерполяция
Внутренний наклон PCHIP через гармоническое среднее
PCHIP вычисляет производную во внутреннем узле по двум секущим. При общем знаке он использует взвешенное гармоническое среднее, а у плато или разворота задаёт нуль.
Формула
Второй интервал [1; 3]. В середине кубик даёт около 3,263 при линейном значении 3. Отмеченные узлы у двух кривых совпадают.
Обозначения
- $mᵢ$
- производная интерполянта во внутреннем узле, ед. y / ед. x
- δᵢ₋₁, δᵢ
- левый и правый секущие наклоны, ед. y / ед. x
- hᵢ₋₁, hᵢ
- левый и правый шаги сетки, ед. x
- w₁, w₂
- веса в гармоническом среднем, ед. x
Условия применения
Нужны три соседних узла с различными и строго возрастающими абсциссами. Разности значений делят на свои шаги. Выбор между нулём и средним делают до деления на секущие, чтобы избежать деления на нуль.
Ограничения
Краевые производные рассчитываются отдельно по односторонним формулам с ограничителями. PCHIP согласует первые производные соседних кубиков, но их вторые производные могут скачком меняться в узлах. Метод интерполирует измерительный шум вместе с полезным сигналом.
Подробное объяснение
В монотонной таблице форма между отсчётами важнее гладкости кривизны. Наклон на стыке большого и малого приращений ограничивают, чтобы соседний почти плоский кусок не получил лишнего изгиба. Гармоническое среднее даёт меньшему по модулю наклону больше влияния, чем арифметическое.
При равных шагах оба веса совпадают, поэтому для секущих a и b получается 2ab/(a+b). На неравномерной сетке веса собирают из двух соседних длин. Если знак сменился или один интервал горизонтальный, касательная в узле горизонтальна. Это позволяет одному и тому же наклону согласовать оба соседних куска.
На равномерной сетке при a = 1 и b = 3 наклон равен 1,5, тогда как арифметическое среднее равно 2. При одинаковых секущих формула возвращает их общий наклон при любых шагах. Знаки двух убывающих секущих сохраняются, поскольку веса положительны, а знаменатель отрицателен.
Полученный наклон используют и справа, и слева от узла в двух кубиках Эрмита. Для монотонности всей кривой нужно также выбрать концевые производные по правилам PCHIP. Если известны непосредственно измеренные производные, уместно сравнить результат с интерполяцией Эрмита на этих производных.
Как пользоваться формулой
- Вычислите шаг слева и шаг справа от выбранного внутреннего узла и проверьте, что оба положительны.
- Найдите секущие наклоны по обоим промежуткам, разделив разность ординат на соответствующий шаг.
- При противоположных знаках или нулевой секущей запишите производную 0 и пропустите деление.
- При одинаковом ненулевом знаке соберите веса, найдите среднее и передайте наклон соседним кубикам.
Историческая справка
В 1980-х годах Фред Фритч и его соавторы исследовали локальные способы строить монотонные кусочно-кубические интерполянты. Технический отчёт, зарегистрированный в базе OSTI, сравнивает изменение формулы Батленда с методом Фритча и Карлсона и обсуждает простоту задания производных по табличным данным.
В статье Фритча и Батленда 1984 года, на которую ссылается документация SciPy, рассматривается локальная монотонная кусочно-кубическая интерполяция. В нынешней реализации выбор наклона описывается двумя ветвями: нулём при смене знака и взвешенным гармоническим средним в остальных случаях. Термин PCHIP также охватывает построение самого кубика и правила для концов таблицы.
Историческая линия формулы
Формулу внутренней производной приводят в описании PCHIP со ссылкой на работу Фритча и Батленда 1984 года. Интерполяция Эрмита даёт форму кубика между узлами; вклад метода PCHIP состоит в подборе производных с учётом формы табличных данных.
Пример
Значения таблицы равны 0, 2 и 4 при x = 0, 1 и 3. Для узла x = 1 получаем h₀ = 1, h₁ = 2, δ₀ = 2 и δ₁ = 1. Оба наклона положительны. Веса w₁ = 5 и w₂ = 4, поэтому m₁ = (5+4)/(5/2+4/1) = 18/13 ≈ 1,385. Результат находится между 1 и 2 и ближе к более пологой секущей. Для крайнего узла x = 3 стандартная односторонняя оценка равна ((2·2+1)·1−2·2)/(2+1)=1/3; ограничитель её не меняет. На середине второго интервала кубик Эрмита даёт 3+(18/13−1/3)/4 = 3+41/156 ≈ 3,263. Наклон выражен в единицах y на единицу x, последнее число — в единицах y.
Частая ошибка
Если заменить гармоническое среднее арифметическим, ограничение формы меняется. Перестановка весов почти незаметна на равномерной сетке, но даёт другое число в примере с шагами 1 и 2. Нулевую секущую обрабатывают отдельной ветвью. Краевой узел нельзя считать внутренним, дублируя ближайший отсчёт.
Практика
Задачи с решением
Две секущие на равных шагах
Условие. В узлах 0, 1, 2 заданы ординаты 0, 1, 4. Найдите наклон при x = 1.
Решение. Секущие 1 и 3, оба веса равны 3. Подстановка даёт 6/(3/1+3/3)=6/4.
Ответ. m₁ = 1,5.
Начало горизонтального участка
Условие. Три последовательных отсчёта 2, 5, 5 даны с шагом 0,5. Найдите средний узловой наклон.
Решение. Слева δ=3/0,5=6, справа δ=0/0,5=0. Срабатывает первая ветвь, делить на правую секущую не нужно.
Ответ. m₁ = 0.
Дополнительные источники
- https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.PchipInterpolator.html
- https://www.osti.gov/biblio/5404930
Связанные формулы
Математика
Кубическая интерполяция Эрмита по значениям и наклонам
Кубический полином Эрмита согласует значения и первые производные на двух концах интервала. Четыре заданных условия определяют единственную кубическую или более простую кривую между узлами.
Математика
Натуральный кубический сплайн: уравнения для вторых производных
Натуральный кубический сплайн: уравнения для вторых производных даёт не только вычислительную запись, но и правило, какие данные определяют результат и как проверить его численно. Формула применяется к строго указанной модели; ниже разобраны предпосылки, два решённых задания и границы корректной интерпретации.
Математика
Линейная интерполяция: значение между двумя узлами
Линейная интерполяция оценивает значение между двумя заданными точками по соединяющей их прямой. Доля положения внутри интервала задаёт веса концов; оценка учитывает наклон, но не кривизну исходного графика.