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

Сплайн с условием not-a-knot на концах

Условие not-a-knot выбирает кубический сплайн без заданных наклонов или нулевой кривизны на концах. Оно требует, чтобы первые два интервала составляли один кубический полином, и то же делает для последних двух интервалов.

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

Формула

$$S'''(x_1^-)=S'''(x_1^+),\qquad S'''(x_{n-1}^-)=S'''(x_{n-1}^+)$$
Схема Неравномерные узлы и единый кубик
01234012345yxединый кубик

При четырёх узлах not-a-knot даёт один кубический полином; показан S(x)=x−x(x−1)/6+x(x−1)(x−3)/4.

Обозначения

$S(x)$
кусочно-кубический интерполянт, единица функции
$x_i$
i-й узел интерполяции, единица аргумента
$S″″′(x_i±)$
односторонняя третья производная у узла, единица функции / аргумент³
$n$
число узлов, —

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

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

Ограничения

Не следует путать not-a-knot с натуральной границей S″(a)=S″(b)=0 или с условием с заданными наклонами, где задают S′(a),S′(b). Условие не гарантирует монотонность, отсутствие выбросов или устойчивость к шуму: как и другие точные сплайны, оно проходит через все данные. При четырёх узлах итогом служит обычный глобальный кубик; при трёх или меньшем числе узлов стандартное правило вырождается и программные пакеты могут выбирать специальные соглашения.

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

Кубический сплайн на каждой ячейке — полином третьей степени, а в обычном внутреннем узле у него непрерывны значение, первая и вторая производные. Для полной определённости остаются два боковых условия. В not-a-knot случае третья производная также непрерывна в первом внутреннем узле и в последнем внутреннем узле. Поскольку третья производная кубика постоянна, её совпадение означает, что соседние куски являются одним и тем же кубическим полиномом. Иными словами, первый внутренний узел не является настоящим узлом смены полинома; аналогично для предпоследнего.

При четырёх узлах оба условия объединяют две пары интервалов, поэтому получается единый кубик, проходящий через четыре точки. Его удобно находить по форме Ньютона через разделённые разности, а затем подставлять x. Для большего числа узлов стандартная система использует кривизны M_i и выражает условия not-a-knot через равенство первых двух локальных третьих производных, а также последних двух. Это позволяет сохранить кусочную форму в центральных интервалах.

Различные расстояния между узлами важны: коэффициенты уравнений зависят от длины каждой ячейки, так что равномерную схему нельзя без поправок переносить на произвольную сетку. Пример с узлами 0,1,3,4 специально неравномерен. Разделённые разности для значений 0,1,2,5 равны сначала 1,1/2,3, затем −1/6 и 5/6, а третья разность равна 1/4. Полученный единственный кубик S(x)=x−x(x−1)/6+x(x−1)(x−3)/4 в точке x=2 даёт 7/6.

Выбор бокового условия — часть модели границы, а не косметическая настройка решателя. Натуральный сплайн предполагает нулевую кривизну на концах, clamped-сплайн использует известные наклоны, а not-a-knot переносит требование гладкости на ближайшие внутренние узлы. Если значения представляют шумные измерения, сглаживающий сплайн может быть уместнее точного прохождения через каждую точку.

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

  1. Упорядочьте как минимум четыре различных узла и запишите значения в них; вычислите каждый шаг h_i=x_{i+1}−x_i, не предполагая равномерную сетку.
  2. Задайте непрерывность значения, первой производной S′ и второй производной S′′ во всех внутренних узлах.
  3. На первом и предпоследнем внутренних узлах потребуйте совпадения односторонних третьих производных слева и справа.
  4. Для четырёх узлов найдите один кубик через таблицу разделённых разностей; для большего набора решите систему коэффициентов сплайна.
  5. Подставьте аргумент в полином нужного интервала и проверьте, что крайние пары интервалов совпадают с точностью до кубического коэффициента.

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

Условия not-a-knot появились как один из способов полностью задать кубический интерполирующий сплайн без измеренных наклонов на концах. В ранней литературе по сплайнам задача естественно записывалась через данные в узлах и дополнительные боковые условия; по мере развития вычислительных методов стали сравнивать выбор нулевой кривизны, заданных наклонов и продолжения одного полинома у краёв. Карл де Бур в техническом отчёте 1985 года подробно формулирует условие: третья производная сплайна должна быть непрерывна в двух ближайших к концам внутренних узлах.

Де Бур объясняет смысл названия: такие соседние узлы формально присутствуют в таблице, но не являются местами смены кубического полинома. В том же отчёте обсуждается доказательство сходимости интерполяции с этим боковым условием и приводятся более ранние ссылки на работы о кубических сплайнах. Поэтому материал связывает современное правило с эволюцией численной теории сплайнов, но не объявляет автора изобретателем условия без отдельного подтверждения. Сегодня not-a-knot широко используется как стандартный автоматический выбор в программных реализациях, когда пользователь не задаёт другую границу.

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

Понятие not-a-knot закрепилось как боковое условие кубической сплайн-интерполяции. В отчёте 1985 года Карл де Бур описал его как непрерывность третьей производной у ближайших к концам внутренних узлов и исследовал сходимость этого варианта. Не приписываем ему единоличное изобретение правила.

Пример

Рассмотрим неравномерные узлы (0;0), (1;1), (3;2), (4;5). При четырёх узлах not-a-knot делает весь интерполянт одним кубиком. Первые разделённые разности: 1, 1/2, 3. Вторые: (1/2−1)/(3−0)=−1/6 и (3−1/2)/(4−1)=5/6. Третья: (5/6−(−1/6))/(4−0)=1/4. Кубик в форме Ньютона S(x)=x−x(x−1)/6+x(x−1)(x−3)/4. При x=2 получаем 2−2/6+2·1·(−1)/4=7/6. Ответ: 7/6. Проверка: S(0)=0, S(1)=1, S(3)=2 и S(4)=5; одна и та же формула действует по обе стороны от обоих внутренних узлов, как требует not-a-knot. Дополнительная проверка показывает, что третья производная постоянна и равна 3/2 на обоих первых интервалах и на обоих последних; значит, обе пары действительно сливаются в один кубик.

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

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

Практика

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

Кубик задан четырьмя узлами

Условие. Через узлы x=0,1,2,3 проходят значения p(x)=x³−2x+1. Найдите not-a-knot интерполянт в x=1,5.

Решение. При четырёх узлах not-a-knot интерполянт является одним кубиком. Значения в узлах равны 1,0,5,22 и точно совпадают с заданным кубиком. Подстановка: p(1,5)=1,5³−2·1,5+1=3,375−3+1=1,375.

Ответ. 1,375

Пять узлов и один настоящий стык

Условие. Для узлов 0, 1, 2, 4, 5 заданы значения 0, 1, 4, 24, 52. Найдите not-a-knot сплайн в x=3.

Решение. Условия в 1 и 4 сливают по две секции, а в 2 совпадают значение, наклон и кривизна. Значит, справа к левому кубику добавляется C(x−2)³. Слева p=ax³+bx²+cx, первые три точки дают b=1−3a и c=2a. Правая пара даёт 3a+C=1 и 60a+27C=27. Отсюда a=0, C=1. На участке справа S=x²+(x−2)³, поэтому S(3)=10.

Ответ. 10 единиц функции.

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

  • https://ftp.cs.wisc.edu/Approx/notaknot.pdf
  • https://pages.cs.wisc.edu/~deboor/412/l2.pdf
  • https://assets.cambridge.org/97805218/84327/excerpt/9780521884327_excerpt.pdf

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

Математика

Натуральный кубический сплайн: уравнения для вторых производных

$h_{i-1}M_{i-1}+2(h_{i-1}+h_i)M_i+h_iM_{i+1}=6(\delta_i-\delta_{i-1})$

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

Математика

Кубический сплайн с заданными наклонами на концах

$\begin{aligned}2h_0M_0+h_0M_1&=6(\delta_0-m_L),\\h_{n-1}M_{n-1}+2h_{n-1}M_n&=6(m_R-\delta_{n-1}).\end{aligned}$

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

Математика

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

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

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

Математика

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

$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 различным узлам. Каждый базисный множитель выбирает значение своего узла и обращает вклады остальных узлов в ноль.