Сплайн-интерполяция
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Июль 2021 г. ) |
В математической области анализа численного сплайн-интерполяция — это форма интерполяции , где интерполянтом является особый тип кусочного полинома, называемый сплайном . То есть вместо того, чтобы подгонять один полином высокой степени ко всем значениям одновременно, сплайн-интерполяция подгоняет полиномы низкой степени к небольшим подмножествам значений, например, подгоняя девять кубических полиномов между каждой из пар по десять точек. , вместо того, чтобы подгонять под них один полином девятой степени. Сплайн-интерполяция часто предпочтительнее полиномиальной интерполяции , поскольку ошибку интерполяции можно сделать небольшой даже при использовании для сплайна полиномов низкой степени. [1] Сплайн-интерполяция также позволяет избежать проблемы феномена Рунге , при котором между точками могут возникать колебания при интерполяции с использованием полиномов высокой степени.
Введение
[ редактировать ]Первоначально сплайном обозначали эластичные линейки , которые изгибались так, чтобы проходить через ряд заранее определенных точек или узлов . Они использовались для создания технических чертежей для судостроения ручного и строительства, как показано на рисунке.
Мы хотим смоделировать подобные типы кривых, используя набор математических уравнений. Предположим, у нас есть последовательность узлы, через . Будет кубический многочлен между каждой последующей парой узлов и подключение к ним обоим, где . Так что будет полиномы, причем первый полином начинается с , и последний многочлен, заканчивающийся на .
Кривизна любой кривой определяется как
где и являются первой и второй производными относительно .Чтобы сплайн принял форму, минимизирующую изгиб (при условии прохождения через все узлы), определим как и быть непрерывным всюду, в том числе и в узлах. Каждый последующий полином должен иметь равные значения (которые равны значению y соответствующей точки данных), производные и вторые производные в их соединяющих узлах, то есть, что
Этого можно достичь только в том случае, если используются полиномы степени 3 (кубические полиномы) или выше. Классический подход заключается в использовании полиномов ровно 3-й степени — кубических сплайнов .
В дополнение к трем условиям, указанным выше, « натуральный кубический сплайн » имеет условие, при котором .
В дополнение к трем основным условиям, указанным выше, « зажатый кубический сплайн » имеет условия, при которых и где является производной интерполированной функции.
В дополнение к трем основным условиям, указанным выше, « сплайн без узлов » имеет условия, при которых и . [2]
Алгоритм поиска интерполяционного кубического сплайна
[ редактировать ]Мы хотим найти каждый многочлен учитывая баллы через . Для этого рассмотрим только один участок кривой, , который будет интерполировать из к . Эта часть будет иметь наклоны и в его конечных точках. Или, точнее,
Полное уравнение можно записать в симметричной форме
( 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 ) |
где я = 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 балл.Для сплайна «без узла» дополнительные уравнения будут выглядеть следующим образом:
где .
Пример
[ редактировать ]В случае трех точек значения для находятся путем решения системы трехдиагональных линейных уравнений
с
За три балла
это понятно
На рисунке сплайн-функция, состоящая из двух кубических многочленов и заданное ( 9 ).
См. также
[ редактировать ]- Акима сплайн
- Круговая интерполяция
- Кубический сплайн Эрмита
- Центростремительный сплайн Катмулла – Рома
- Дискретная сплайн-интерполяция
- Монотонная кубическая интерполяция
- Неравномерный рациональный B-сплайн
- Многомерная интерполяция
- Полиномиальная интерполяция
- Сглаживающий сплайн
- Сплайновый вейвлет
- Тонкая пластина шлица
- Полигармонический сплайн
Ссылки
[ редактировать ]- ^ Холл, Чарльз А.; Мейер, Уэстон В. (1976). «Оптимальные границы ошибок для интерполяции кубическими сплайнами» . Журнал теории приближения . 16 (2): 105–122. дои : 10.1016/0021-9045(76)90040-X .
- ^ Берден, Ричард; Фейрес, Дуглас (2015). Численный анализ (10-е изд.). Cengage Обучение. стр. 142–157. ISBN 9781305253667 .
Дальнейшее чтение
[ редактировать ]- Шенберг, Исаак Дж. (1946). «Вклад в проблему аппроксимации эквидистантных данных аналитическими функциями: Часть A. - К проблеме сглаживания или градуировки. Первый класс формул аналитического приближения» . Ежеквартальный журнал прикладной математики . 4 (2): 45–99. дои : 10.1090/qam/15914 .
- Шенберг, Исаак Дж. (1946). «Вклад в проблему аппроксимации эквидистантных данных аналитическими функциями: Часть B. - К проблеме оскуляторной интерполяции. Второй класс формул аналитического приближения» . Ежеквартальный журнал прикладной математики . 4 (2): 112–141. дои : 10.1090/qam/16705 .
Внешние ссылки
[ редактировать ]- Инструмент онлайн-расчета и визуализации интерполяции кубическими сплайнами (с исходным кодом JavaScript)
- «Сплайн-интерполяция» , Математическая энциклопедия , EMS Press , 2001 [1994]
- Динамические кубические сплайны с JSXGraph
- Лекции по теории и практике сплайн-интерполяции
- Статья, в которой шаг за шагом объясняется, как выполняется интерполяция кубическими сплайнами, но только для равноудаленных узлов.
- Численные рецепты на языке C, перейдите к главе 3, раздел 3-3.
- Примечание о кубических сплайнах
- Информация о сплайн-интерполяции (включая код на Фортране 77)
- TinySpline: C-библиотека с открытым исходным кодом для сплайнов, реализующая интерполяцию кубическими сплайнами.
- SciPy Spline Interpolation: пакет Python, реализующий интерполяцию.
- Кубическая интерполяция: C#-библиотека с открытым исходным кодом для интерполяции кубическими сплайнами.