Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В математической области численного анализа , сплайн - интерполяция является одной из форм интерполяции , где интерполянт это особый тип кусочно - полинома называется сплайн . То есть, вместо того, чтобы подгонять один полином высокой степени ко всем значениям сразу, сплайн-интерполяция подбирает полиномы низкой степени к небольшим подмножествам значений: например, подгонка девяти кубических полиномов между каждой из пар из десяти точек , вместо того, чтобы подгонять ко всем один многочлен десятой степени. Сплайн-интерполяция часто предпочтительнее полиномиальной интерполяции, потому что ошибка интерполяцииможет быть уменьшен даже при использовании полиномов низкой степени для сплайна. [1] Сплайн-интерполяция также позволяет избежать проблемы феномена Рунге , при котором колебания могут возникать между точками при интерполяции с использованием многочленов высокой степени.

Введение [ править ]

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

Рисунок 1: Интерполяция кубическими сплайнами между восемью точками. Нарисованные вручную технические чертежи для судостроения и т. Д. Были сделаны с использованием гибких линейок, которые были согнуты в соответствии с заранее определенными точками.

Мы хотим смоделировать подобные типы кривых, используя набор математических уравнений, с одним многочленом для каждой пары узлов и , где . Итак, будут многочлены и узлы: первый многочлен начинается в , а последний многочлен заканчивается в .

Кривизны любой кривой определяется следующим образом:

Чтобы сплайн принял форму, которая минимизирует изгиб (при ограничении прохождения через все узлы), мы определим и то, и другое как непрерывное везде, включая узлы. Таким образом, первая и вторая производные каждого последующего многочлена должны иметь одинаковые значения в узлах, то есть

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

Алгоритм поиска интерполирующего кубического сплайна [ править ]

Мы хотим найти каждый многочлен заданной точки через . Для этого мы рассмотрим только один кусок кривой , который будет интерполировать от до . Этот кусок будет иметь наклоны и на концах. Или, точнее:

Полное уравнение можно записать в симметричной форме

куда

Но что такое и ? Чтобы получить эти критические значения, мы должны учитывать, что

Отсюда следует, что

Положив t = 0 и t = 1 соответственно в уравнениях ( 5 ) и ( 6 ), из ( 2 ) получаем, что действительно первые производные q ′ ( x 1 ) = k 1 и q ′ ( x 2 ) = k 2, а также вторые производные

Если теперь ( x i , y i ), i = 0, 1, ..., n - это n + 1 балл и

где i = 1, 2, ..., n и - n многочленов третьей степени, интерполирующих y в интервале x i −1xx i для i = 1, ..., n, таких что q ′ i ( x i ) = q ′ i +1 ( x i ) для i = 1, ..., n - 1, то вместе n многочленов определяют дифференцируемую функцию в интервале x 0xx n и

для i = 1, ..., n где

Если последовательность k 0 , k 1 , ..., k n такова, что, кроме того, q ′ ′ i ( x i ) = q ′ ′ i +1 ( x i ) выполняется для i = 1, ... , n -1, то полученная функция будет иметь даже непрерывную вторую производную.

Из ( 7 ), ( 8 ), ( 10 ) и ( 11 ) следует, что это так тогда и только тогда, когда

для i = 1, ..., n -1. Соотношения ( 15 ) представляют собой n - 1 линейных уравнений для n + 1 значений k 0 , k 1 , ..., k n .

Для упругих линеек, являющихся моделью для сплайновой интерполяции, есть то, что слева от самого левого «узла» и справа от самого правого «узла» линейка может перемещаться свободно и, следовательно, примет форму прямая с q ′ ′ = 0 . Поскольку q ′ ′ должен быть непрерывной функцией от x, получается, что для «Естественных сплайнов» одно в дополнение к n - 1 линейным уравнениям ( 15 ) должно иметь

т.е. что

В конечном итоге ( 15 ) вместе с ( 16 ) и ( 17 ) составляют n + 1 линейных уравнений, которые однозначно определяют n + 1 параметр k 0 , k 1 , ..., k n .

Существуют и другие конечные условия: «зажатый шлиц», который определяет наклон на концах шлицевого соединения, и популярный «сплайн без узла», который требует, чтобы третья производная также была непрерывной в точках x 1 и x N. −1 балл. Дополнительные уравнения для сплайна «без узла» будут выглядеть так:

где .

Пример [ править ]

Рисунок 2: Интерполяция кубическими «естественными» сплайнами между тремя точками.

В случае трех точек значения находятся из решения системы линейных трехдиагональных уравнений

с

По трем точкам

,

каждый получает это

а из ( 10 ) и ( 11 ) следует, что

На рисунке 2 показана сплайн-функция, состоящая из двух кубических многочленов и заданная формулой ( 9 ).

См. Также [ править ]

  • Кубический шлиц Эрмита
  • Центростремительный шлиц Катмулла – Рома
  • Дискретная сплайн-интерполяция
  • Монотонная кубическая интерполяция
  • NURBS
  • Многомерная интерполяция
  • Полиномиальная интерполяция
  • Сглаживающий сплайн
  • Сплайн вейвлет
  • Тонкая шлицевая пластина
  • Полигармонический сплайн

Компьютерный код [ править ]

TinySpline: C-библиотека с открытым исходным кодом для сплайнов, которая реализует интерполяцию кубических сплайнов.

SciPy Spline Interpolation: пакет Python, реализующий интерполяцию

Кубическая интерполяция: библиотека C # с открытым исходным кодом для кубической сплайн-интерполяции

Ссылки [ править ]

  1. ^ Холл, Чарльз A .; Мейер, Уэстон В. (1976). «Оптимальные границы ошибок для интерполяции кубического сплайна». Журнал теории приближений . 16 (2): 105–122. DOI : 10.1016 / 0021-9045 (76) 90040-X .
  • Шенберг, Исаак Дж. (1946). «Вклад в проблему аппроксимации эквидистантных данных аналитическими функциями: часть A. - К проблеме сглаживания или градуировки. Первый класс формул аналитической аппроксимации» . Квартал прикладной математики . 4 (2): 45–99. DOI : 10,1090 / qam / 15914 .CS1 maint: ref=harv (link)
  • Шенберг, Исаак Дж. (1946). «Вклад в проблему аппроксимации эквидистантных данных аналитическими функциями: Часть Б. - К проблеме осуляторной интерполяции. Второй класс формул аналитической аппроксимации» . Квартал прикладной математики . 4 (2): 112–141. DOI : 10.1090 / QAM / 16705 .CS1 maint: ref=harv (link)

Внешние ссылки [ править ]

  • Инструмент онлайн-расчета и визуализации интерполяции кубических сплайнов (с исходным кодом JavaScript)
  • "Сплайн-интерполяция" , Математическая энциклопедия , EMS Press , 2001 [1994]
  • Динамические кубические сплайны с JSXGraph
  • Лекции по теории и практике сплайн-интерполяции
  • Документ, в котором шаг за шагом объясняется, как выполняется интерполяция кубическим сплайном, но только для равноудаленных узлов.
  • Цифровые рецепты на языке C, перейдите к главе 3, раздел 3-3
  • Замечание о кубических шлицах
  • Информация о сплайн-интерполяции (включая код в Fortran 77)