Математика / Интерполяция

Рациональная интерполяция Флоатера — Хорманна при d = 1

При d = 1 рациональный интерполянт Флоатера — Хорманна сочетает соседние линейные полиномы. На равномерной сетке внутренние веса вдвое больше крайних по модулю.

Опубликовано: Обновлено:

Формула

$$\begin{aligned}r(x)&=\frac{\sum_{j=0}^n w_jy_j/(x-x_j)}{\sum_{j=0}^n w_j/(x-x_j)},\\ w_j&=(-1)^{j-1}\left(\frac{\mathbf1_{j>0}}{h_{j-1}}+\frac{\mathbf1_{j<n}}{h_j}\right).\end{aligned}$$
Схема Рациональная кривая и исходный квадрат
01230369yxРациональнаяКвадрат

Кривые совпадают в четырёх чёрных узлах. В точке 1,5 рациональная кривая даёт 2,1, а парабола — 2,25.

Обозначения

$r(x)$
значение рационального интерполянта, ед. y
xⱼ, yⱼ
абсцисса и ордината узла j, ед. x и ед. y
$hⱼ$
шаг xⱼ₊₁ − xⱼ, ед. x
$wⱼ$
барицентрический вес, 1 / ед. x
$1условие$
индикатор присутствия слагаемого, —

Условия применения

Нужны как минимум два отсчёта с возрастающими вещественными абсциссами. Для крайних весов отсутствующее слагаемое целиком пропускают, включая обращение несуществующего шага. Если x совпадает с узлом, возвращают его ординату.

Ограничения

Формула весов относится только к d = 1. Гладкость на вещественной оси и отсутствие вещественных полюсов в точной арифметике не дают оценки погрешности на произвольных данных. Вне узлового диапазона результат нужно рассматривать как экстраполяцию.

Подробное объяснение

Схема соединяет прямые через пары соседних узлов в одну гладкую рациональную функцию. Параметр d здесь задаёт степень каждой локальной прямой. Итоговая функция обычно не является ни ломаной, ни единым полиномом через все табличные значения.

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

На равномерной сетке шаг сокращается. Для четырёх узлов подойдут веса −1, 2, −2, 1. Отдельные дроби в числителе и знаменателе велики вблизи узла, но в пределе доминирующие слагаемые имеют общий множитель и дают ординату этого узла.

При любых значениях d результат воспроизводит полиномы степени не выше d. Поэтому для d = 1 удобно проверить программу на линейных данных. Квадратичная таблица в примере показывает отличие от обычного полиномиального барицентрического интерполянта: значения совпадут в узлах, но внутри промежутков могут разойтись.

Как пользоваться формулой

  1. Отсортируйте абсциссы, исключите повторяющиеся узлы и вычислите положительные расстояния между соседями.
  2. Назначьте крайним узлам по одному обратному шагу, внутренним — сумму двух, затем расставьте знаки.
  3. Если аргумент равен узловому, сразу верните ординату. В остальных случаях вычислите четыре или больше дробей.
  4. Просуммируйте дроби в знаменателе и те же дроби с ординатами в числителе, затем разделите суммы.

Историческая справка

Майкл Флоатер и Кай Хорманн опубликовали в Numerische Mathematik работу о барицентрической рациональной интерполяции в 2007 году. В ней изучается семейство функций без вещественных полюсов и с порядком приближения, зависящим от степени локальных полиномов. Формула на странице относится к одному низкому порядку этого семейства.

В современных численных библиотеках параметр d обычно передаётся отдельно от таблицы значений. Так один интерфейс позволяет сравнить несколько вариантов рациональной интерполяции при одинаковой сетке. При d = 1 локальные полиномы становятся прямыми, поэтому общая формула весов сводится к сложению обратных шагов. Именно этот случай разобран в примерах.

Историческая линия формулы

Название относится к семейству рациональных интерполянтов, построенному Майклом Флоатером и Каем Хорманном. Формула весов для d = 1 — специализация их общей схемы. Барицентрическая запись полиномиальной интерполяции составляет отдельную, более раннюю линию методов.

Пример

Возьмём xⱼ = 0, 1, 2, 3 и yⱼ = 0, 1, 4, 9. Веса −1, 2, −2, 1. В точке x = 1,5 дроби wⱼ/(x−xⱼ) равны −2/3, 4, 4, −2/3. Знаменатель равен 20/3. Числитель равен 0+4+16−6=14, так что результат r(1,5)=14/(20/3)=2,1. Полином x², совпадающий с той же таблицей, даёт 2,25, а прямая через ближайшие узлы даёт 2,5. Различие показывает, что степень локального полинома не определяет итоговую функцию. Размерности дробей в числителе и знаменателе сокращаются до единиц исходных ординат. Для безразмерной таблицы итог тоже безразмерен.

Частая ошибка

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

Практика

Задачи с решением

Аргумент в первом интервале

Условие. Для таблицы квадрата в узлах 0, 1, 2, 3 найдите r(0,5).

Решение. Дроби равны −2, −4, 4/3 и −2/5. Их сумма −76/15, взвешенная сумма по y равна −34/15. После сокращения получается 17/38.

Ответ. r(0,5) = 17/38 ≈ 0,4474.

Неравномерная сетка и линейная таблица

Условие. В узлах 0, 2, 3 заданы значения 1, 5, 7. Найдите r(1).

Решение. Шаги 2 и 1, веса −1/2, 3/2, −1. Дроби при x=1 равны −1/2, −3/2, 1/2. Их сумма −3/2, числитель −1/2−15/2+7/2=−9/2.

Ответ. r(1)=3, что совпадает с 2x+1.

Дополнительные источники

  • https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.FloaterHormannInterpolator.html
  • https://www.inf.usi.ch/faculty/hormann/papers/Floater.2006.BRI.pdf

Связанные формулы

Математика

Барицентрическая интерполяция: веса и вычисление полинома

$P(x)=\frac{\sum_{k=0}^{n}\dfrac{w_ky_k}{x-x_k}}{\sum_{k=0}^{n}\dfrac{w_k}{x-x_k}},\qquad w_k=\frac{1}{\prod_{j\ne k}(x_k-x_j)},\quad x\ne x_k$

Барицентрическая форма вычисляет полином Лагранжа через заранее рассчитанные веса узлов. Она удобна для множества запросов по одной таблице; при точном совпадении аргумента с узлом нужно сразу вернуть узловое значение.

Математика

Линейная интерполяция: значение между двумя узлами

$P(x)=y_0+\frac{y_1-y_0}{x_1-x_0}(x-x_0)=(1-t)y_0+ty_1,\quad t=\frac{x-x_0}{x_1-x_0}$

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

Математика

Аппроксимант Паде [1/1]: дробное приближение ряда

$[1/1]_{e^x}(x)=\frac{1+x/2}{1-x/2}$

Аппроксимант Паде [1/1]: дробное приближение ряда даёт не только вычислительную запись, но и правило, какие данные определяют результат и как проверить его численно. Формула применяется к строго указанной модели; ниже разобраны предпосылки, два решённых задания и границы корректной интерпретации.