В математической области численного анализа , сплайн - интерполяция является одной из форм интерполяции , где интерполянт это особый тип кусочно - полинома называется сплайн . То есть, вместо того, чтобы подгонять один полином высокой степени ко всем значениям сразу, сплайн-интерполяция подбирает полиномы низкой степени к небольшим подмножествам значений: например, подгонка девяти кубических полиномов между каждой из пар из десяти точек , вместо того, чтобы подгонять ко всем один многочлен десятой степени. Сплайн-интерполяция часто предпочтительнее полиномиальной интерполяции, потому что ошибка интерполяцииможет быть уменьшен даже при использовании полиномов низкой степени для сплайна. [1] Сплайн-интерполяция также позволяет избежать проблемы феномена Рунге , при котором колебания могут возникать между точками при интерполяции с использованием многочленов высокой степени.
Первоначально сплайн был термином для эластичных линейок , которые изгибались, чтобы проходить через несколько заранее определенных точек или узлов . Они использовались для создания технических чертежей для судостроения и строительства вручную, как показано на Рисунке 1.
Рисунок 1: Интерполяция кубическими сплайнами между восемью точками. Нарисованные вручную технические чертежи для судостроения и т. Д. Были сделаны с использованием гибких линейок, которые были согнуты в соответствии с заранее определенными точками.
Мы хотим смоделировать подобные типы кривых, используя набор математических уравнений, с одним многочленом для каждой пары узлов и , где . Итак, будут многочлены и узлы: первый многочлен начинается в , а последний многочлен заканчивается в .
Кривизны любой кривой определяется следующим образом:
Чтобы сплайн принял форму, которая минимизирует изгиб (при ограничении прохождения через все узлы), мы определим и то, и другое как непрерывное везде, включая узлы. Таким образом, первая и вторая производные каждого последующего многочлена должны иметь одинаковые значения в узлах, то есть
Это может быть достигнуто только при использовании многочленов степени 3 или выше - кубических многочленов или выше. Классический подход заключается в использовании многочленов ровной степени 3 - кубических сплайнов .
Мы хотим найти каждый многочлен заданной точки через . Для этого мы рассмотрим только один кусок кривой , который будет интерполировать от до . Этот кусок будет иметь наклоны и на концах. Или, точнее:
Полное уравнение можно записать в симметричной форме
( 1 )
куда
( 2 )
( 3 )
( 4 )
Но что такое и ? Чтобы получить эти критические значения, мы должны учитывать, что
Отсюда следует, что
( 5 )
( 6 )
Положив t = 0 и t = 1 соответственно в уравнениях ( 5 ) и ( 6 ), из ( 2 ) получаем, что действительно первые производные q ′ ( x 1 ) = k 1 и q ′ ( x 2 ) = k 2, а также вторые производные
( 7 )
( 8 )
Если теперь ( x i , y i ), i = 0, 1, ..., n - это n + 1 балл и
( 9 )
где i = 1, 2, ..., n и - n многочленов третьей степени, интерполирующих y в интервале x i −1 ≤ x ≤ x i для i = 1, ..., n, таких что q ′ i ( x i ) = q ′ i +1 ( x i ) для i = 1, ..., n - 1, то вместе n многочленов определяют дифференцируемую функцию в интервале x 0 ≤x ≤ x n и
( 10 )
( 11 )
для i = 1, ..., n где
( 12 )
( 13 )
( 14 )
Если последовательность k 0 , k 1 , ..., k n такова, что, кроме того, q ′ ′ i ( x i ) = q ′ ′ i +1 ( x i ) выполняется для i = 1, ... , n -1, то полученная функция будет иметь даже непрерывную вторую производную.
Из ( 7 ), ( 8 ), ( 10 ) и ( 11 ) следует, что это так тогда и только тогда, когда
( 15 )
для i = 1, ..., n -1. Соотношения ( 15 ) представляют собой n - 1 линейных уравнений для n + 1 значений k 0 , k 1 , ..., k n .
Для упругих линеек, являющихся моделью для сплайновой интерполяции, есть то, что слева от самого левого «узла» и справа от самого правого «узла» линейка может перемещаться свободно и, следовательно, примет форму прямая с q ′ ′ = 0 . Поскольку q ′ ′ должен быть непрерывной функцией от x, получается, что для «Естественных сплайнов» одно в дополнение к n - 1 линейным уравнениям ( 15 ) должно иметь
т.е. что
( 16 )
( 17 )
В конечном итоге ( 15 ) вместе с ( 16 ) и ( 17 ) составляют n + 1 линейных уравнений, которые однозначно определяют n + 1 параметр k 0 , k 1 , ..., k n .
Существуют и другие конечные условия: «зажатый шлиц», который определяет наклон на концах шлицевого соединения, и популярный «сплайн без узла», который требует, чтобы третья производная также была непрерывной в точках x 1 и x N. −1 балл. Дополнительные уравнения для сплайна «без узла» будут выглядеть так:
Кубическая интерполяция: библиотека C # с открытым исходным кодом для кубической сплайн-интерполяции
Ссылки [ править ]
^ Холл, Чарльз 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)