Математика / Начала анализа

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

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

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

Формула

$$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$$
Схема Барицентрические суммы при x = 0,5
Барицентрические суммы при x = 0,5Барицентрические суммы при x = 0,5числитель38/3знаменатель16/3отношение2,375Узлы 0,1,2; значения 1,3,2

Узлы 0,1,2; значения 1,3,2

Обозначения

$x_k$
различные узлы, единица аргумента
$y_k$
значения в узлах, единица функции
$w_k$
барицентрические веса, единица аргумента^(−n)
$x$
аргумент запроса, единица аргумента
$P(x)$
значение интерполяционного полинома, единица функции

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

Узлы различны, веса соответствуют именно их набору. Формула отношения используется вне самих узлов; при x = xₖ ответ равен yₖ по отдельной ветке. Общий ненулевой множитель всех весов не меняет отношения и может применяться для нормирования.

Ограничения

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

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

Полином остаётся тем же, что в форме Лагранжа: меняется способ вычисления. Из базисных произведений выделяют общую часть и получают отношение двух сумм. Общие большие множители сокращаются, а информация о расположении узлов хранится в весах wₖ.

Подготовка обычных весов по всем попарным разностям требует O(n²) операций, а один последующий запрос — O(n). Если набор xₖ не изменился, веса не нужно пересчитывать при каждом запросе или при замене только значений yₖ.

При x = xₖ отдельные дроби формально не определены. Математически предел всего отношения равен yₖ, но машинное деление на ноль не вычислит этот предел автоматически. Реализация должна сначала проверить точное совпадение с узлом и вернуть его значение.

Умножение всех весов на одну ненулевую константу сокращается в числителе и знаменателе. Поэтому для узлов 0,1,2 можно применять как веса (1/2,−1,1/2), так и (1,−2,1). Индивидуально менять вес одного узла уже нельзя: это меняет функцию.

Барицентрическая запись обычно удобнее прямой суммы произведений, но не делает произвольные данные хорошо обусловленными. Ошибки измерений остаются, а большая степень на равномерных узлах способна давать выбросы. Выбор узлов и численная организация — связанные, но разные вопросы.

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

  1. Вычислите веса по различным узлам и при необходимости умножьте все на общий коэффициент, сохраняя их отношения.
  2. Перед любым делением проверьте, совпал ли запрос с одним из узлов; в этом случае сразу верните соответствующее y.
  3. Для остальных запросов отдельно накопите числитель и знаменатель, используя одни и те же разности x−xₖ и веса.
  4. Разделите суммы и сравните с независимой формой полинома; не принимайте удобство вычисления за гарантию качества исходных узлов.

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

Барицентрическая запись является алгебраическим представлением полиномиальной интерполяции, а её вычислительные достоинства подробно обсуждаются в современном численном анализе. Статья Jean-Paul Berrut и Lloyd Trefethen Barycentric Lagrange Interpolation опубликована в SIAM Review в 2004 году. Авторы рассматривают практическую роль формы, не объявляя саму алгебраическую идею новым изобретением этого года. Справочник NIST DLMF также связывает её с интерполяционным полиномом, а учебник FNC показывает повторное использование весов и вычисление значений. Этот контекст отличает математический объект от алгоритма его оценки: формулы Лагранжа и барицентрическая форма дают один полином, но по-разному расходуют операции и ведут себя в машинной арифметике.

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

Работа Беррю и Трефетена 2004 года приведена как источник современного анализа и практики барицентрической формы. Год статьи не объявляется датой изобретения интерполяции. Формула рассматривается как представление того же полинома Лагранжа.

Пример

Узлы 0,1,2 имеют значения 1,3,2. Веса равны (1/2,−1,1/2); умножим все на 2 и получим (1,−2,1). При x = 0,5 дробные веса составляют 1/0,5 = 2, −2/(−0,5) = 4 и 1/(−1,5) = −2/3. Числитель равен 2·1+4·3−(2/3)·2 = 38/3, знаменатель 2+4−2/3 = 16/3. Отношение даёт P(0,5) = 38/16 = 2,375. Независимая проверка полиномом 1+3,5x−1,5x² возвращает 1+1,75−0,375 = 2,375. Все данные безразмерны. Для запроса x = 1 следует сразу вернуть 3; подстановка в дроби создала бы деление на ноль, хотя сам полином в этой точке совершенно определён.

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

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

Практика

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

Веса неравномерных узлов

Условие. Найдите веса для узлов 0,2,5.

Решение. w₀ = 1/((0−2)(0−5)) = 1/10; w₁ = 1/((2−0)(2−5)) = −1/6; w₂ = 1/((5−0)(5−2)) = 1/15. Общий масштаб 30 даёт эквивалентные веса 3,−5,2.

Ответ. 1/10, −1/6, 1/15; либо 3,−5,2.

Проверка квадрата

Условие. Для узлов 0,1,2 со значениями 0,1,4 найдите P(0,5), используя веса 1,−2,1.

Решение. Дробные веса равны 2,4,−2/3. Числитель 0+4−8/3 = 4/3; знаменатель 16/3. Отношение равно 1/4, что совпадает с 0,5².

Ответ. P(0,5) = 0,25.

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

  • https://people.maths.ox.ac.uk/trefethen/barycentric.pdf
  • https://fncbook.com/barycentric/
  • https://dlmf.nist.gov/3.3

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

Математика

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

$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}$

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

Математика

Интерполяция Лагранжа: полином через заданные точки

$P_n(x)=\sum_{k=0}^{n}y_kL_k(x),\qquad L_k(x)=\prod_{\substack{0\leq j\leq n\\j\ne k}}\frac{x-x_j}{x_k-x_j}$

Формула Лагранжа строит полином степени не выше n по n+1 различным узлам. Каждый базисный множитель выбирает значение своего узла и обращает вклады остальных узлов в ноль.

Математика

Интерполяция Ньютона: таблица разделённых разностей

$P_n(x)=f[x_0]+\sum_{k=1}^{n}f[x_0,\ldots,x_k]\prod_{j=0}^{k-1}(x-x_j),\quad f[x_i,\ldots,x_j]=\frac{f[x_{i+1},\ldots,x_j]-f[x_i,\ldots,x_{j-1}]}{x_j-x_i}$

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

Математика

Кубическая интерполяция Эрмита по значениям и наклонам

$H(x)=h_{00}(s)y_0+h_{10}(s)\ell m_0+h_{01}(s)y_1+h_{11}(s)\ell m_1,\quad s=\frac{x-x_0}{\ell},\quad \ell=x_1-x_0$

Кубический полином Эрмита согласует значения и первые производные на двух концах интервала. Четыре заданных условия определяют единственную кубическую или более простую кривую между узлами.