Кубический сплайн: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Onuch-v (обсуждение | вклад) Нет описания правки |
Onuch-v (обсуждение | вклад) |
||
Строка 38: | Строка 38: | ||
Отсюда получаем формулы для вычисления коэффициентов "Естественного сплайна": |
Отсюда получаем формулы для вычисления коэффициентов "Естественного сплайна": |
||
:<math>a_{i} = f(x_{i})</math>; |
:<math id="ai">a_{i} = f(x_{i})</math>; |
||
:<math>d_{i-1} = \frac{c_{i} - c_{i - 1}}{3 \cdot h_{i - 1}}</math>; |
:<math id="di">d_{i-1} = \frac{c_{i} - c_{i - 1}}{3 \cdot h_{i - 1}}</math>; |
||
:<math>b_{i} = \frac{a_{i} - a_{i - 1}}{h_{i - 1}} + \frac{2 \cdot c_{i} + c_{i - 1}}{3} \cdot h_{i - 1}</math>; |
:<math id="bi">b_{i} = \frac{a_{i} - a_{i - 1}}{h_{i - 1}} + \frac{2 \cdot c_{i} + c_{i - 1}}{3} \cdot h_{i - 1}</math>; |
||
:<math>c_{i - 1} \cdot h_{i-1} + 2 \cdot c_{i} \cdot(h_{i} + h_{i-1}) + c_{i + 1} \cdot h_{i} = 3 \cdot \left(\frac{a_{i+1} - a_{i}}{h_{i}} - \frac{a_{i} - a_{i - 1}}{h_{i - 1}}\right)</math>; |
:<math id="ci">c_{i - 1} \cdot h_{i-1} + 2 \cdot c_{i} \cdot(h_{i} + h_{i-1}) + c_{i + 1} \cdot h_{i} = 3 \cdot \left(\frac{a_{i+1} - a_{i}}{h_{i}} - \frac{a_{i} - a_{i - 1}}{h_{i - 1}}\right)</math>; |
||
:причем <math>c_{N} = S''(x_{N}) = 0</math>и <math>c_{1} - d_{1} \cdot h_{1} = S''(x_{0}) = 0</math>. |
:причем <math>c_{N} = S''(x_{N}) = 0</math>и <math>c_{1} - d_{1} \cdot h_{1} = S''(x_{0}) = 0</math>. |
||
Версия от 20:28, 30 августа 2018
Кубический сплайн — функция, область определения которой разбита на конечное число отрезков, на каждом из которых она совпадает с некоторым кубическим многочленом (полиномом).
Описание
Функция задана на отрезке , разбитом на части , . Кубическим сплайном дефекта 1 (разность между степенью и гладкостью сплайна) называется функция , которая:
- на каждом отрезке является многочленом степени не выше третьей;
- имеет непрерывные первую и вторую производные на всём отрезке ;
- в точках выполняется равенство , т. е. сплайн интерполирует функцию в точках .
Для однозначного задания сплайна перечисленных условий недостаточно, для построения сплайна необходимо наложить дополнительные требования — граничные условия:
- "Естественный сплайн" — граничные условия вида: ;
- Непрерывность второй производной -- граничные условия вида: ;
- Периодический сплайн — граничные условия вида: и .
Теорема: Для любой функции и любого разбиения отрезка на части существует ровно один естественный сплайн , удовлетворяющий перечисленным выше условиям.
Эта теорема является следствием более общей теоремы Шёнберга-Уитни об условиях существования интерполяционного сплайна.
Построение
На каждом отрезке функция есть полином третьей степени , коэффициенты которого надо определить. Запишем для удобства в виде:
тогда
Условия непрерывности всех производных до второго порядка включительно
записываются в виде
а условия интерполяции в виде
Обозначим
Отсюда получаем формулы для вычисления коэффициентов "Естественного сплайна":
- ;
- ;
- ;
- ;
- причем и .
Если учесть, что , то вычисление можно провести с помощью метода прогонки для трёхдиагональной матрицы.
Компьютерный код
Cubic Interpolation: C#-библиотека с открытым исходным кодом кубической интерполяции сплайном по алгоритму, изложенному Carl de Boor в своей книге. Автор: Вадим А. Онучин, Valex Corp. [1]
Примечания
Литература
- de Boor, Carl. A Practical Guide to Splines. — New York: Springer-Verlag, 1978.
- Роджерс Д., Адамс Дж. Математические основы машинной графики. — М.: Мир, 2001. — ISBN 5-03-002143-4.
- Костомаров Д. П., Фаворский А. П. Вводные лекции по численным методам.
- Волков Е. А. Глава 1. Приближение функций многочленами. § 11. Сплайны // Численные методы. — Учеб. пособие для вузов. — 2-е изд., испр.. — М.: Наука, 1987. — С. 63-68. — 248 с.
Ссылки
Для улучшения этой статьи желательно:
|