Кубический сплайн

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Некоторая функция f(x) задана на отрезке [a,b], разбитом на части [x_{i-1},x_i], a=x_0< x_1< ... <x_N=b. Кубическим сплайном дефекта 1 называется функция S(x), которая:

  • на каждом отрезке [x_{i-1},x_i] является многочленом степени не выше третьей;
  • имеет непрерывные первую и вторую производные на всём отрезке [a,b];
  • в точках x_i выполняется равенство S(x_i) = f(x_i), т. е. сплайн S(x) интерполирует функцию f в точках x_i.

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

Естественным кубическим сплайном называется кубический сплайн, удовлетворяющий также граничным условиям вида:

S''(a) = S''(b) = 0.


Теорема: Для любой функции f и любого разбиения отрезка [a,b] cуществует ровно один естественный сплайн S(x), удовлетворяющий перечисленным выше условиям.

Эта теорема является следствием более общей теоремы Шёнберга-Уитни об условиях существования интерполяционного сплайна.

[править] Построение

Обозначим: h_i = x_i - x_{i-1}

На каждом отрезке [x_{i - 1},x_{i}] функция S(x) есть полином третьей степени S_i(x), коэффициенты которого надо определить. Запишем для удобства S_i(x) в виде:

S_i(x) = a_i + b_i(x - x_i) + {c_i\over2}(x-x_i)^2 + {d_i\over6}(x - x_i)^3 \,\!

тогда

S_i\left(x_i\right) = a_i, \quad S'_i(x_i) = b_i, \quad S''_i(x_i) = c_i \,\!

Условия непрерывности всех производных до второго порядка включительно записываются в виде
S_i\left(x_{i-1}\right) = S_{i-1}(x_{i-1})
S'_i\left(x_{i-1}\right) = S'_{i-1}(x_{i-1})
S''_i\left(x_{i-1}\right) = S''_{i-1}(x_{i-1})
а условия интерполяции в виде

S_i\left(x_{i-1}\right) = f(x_{i-1})

Отсюда получаем формулы для вычисления коэффициентов сплайна:

a_i = f\left(x_i\right) \,\!
h_ic_{i-1} + 2(h_i + h_{i+1})c_i + h_{i+1}c_{i+1} =
6\left({{f_{i+1} - f_i}\over{h_{i+1}}} - {{f_{i} - f_{i-1}}\over{h_{i}}}\right) \,\!
d_i = {{c_i - c_{i-1}}\over{h_i}} \,\!
b_i = {1\over2}h_ic_i - {1\over6}h_i^2d_i + {{f_i - f_{i-1}}\over{h_i}} \,\!

Если учесть, что c_0 = c_n = 0, то вычисление c можно провести с помощью метода прогонки для трёхдиагональной матрицы.


[править] Литература

  • Роджерс Д.,Адамс Дж. Математические основы машинной графики. — М.: Мир, 2001. — ISBN 5-03-002143-4
  • Костомаров Д.П., Фаворский А.П. Вводные лекции по численным методам.
Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Участие
Печать/экспорт
Инструменты