Русская Википедия:Кубический сплайн

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

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

Описание

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

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

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

  1. "Естественный сплайн" — граничные условия вида: <math>S(a) = S(b) = 0</math>;
  2. Непрерывность второй производной — граничные условия вида: <math>S(a) = S(b) = 0</math>;
  3. Периодический сплайн — граничные условия вида: <math>S'(a) = S'(b)</math>и <math>S(a) = S(b)</math>.

Теорема: Для любой функции <math>f</math> и любого разбиения отрезка <math>[a,b]</math>на части <math>[x_{i-1},x_i]</math>существует ровно один естественный сплайн <math>S_{i}(x)</math>, удовлетворяющий перечисленным выше условиям.

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

Построение

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

<math>S_i(x) = a_i + b_i(x - x_i) + {c_i}(x-x_i)^2 + {d_i}(x - x_i)^3</math>

тогда

<math>S_i\left(x_i\right) = a_i, \quad S'_i(x_i) = b_i, \quad S_i(x_i) = 2c_i, \quad

S_i\left(x_i\right) = 6d_i \quad i=\overline{1,N}.</math>

Условия непрерывности всех производных до второго порядка включительно записываются в виде

<math>S_i\left(x_{i-1}\right) = S_{i-1}(x_{i-1}),</math>
<math>S'_i\left(x_{i-1}\right) = S'_{i-1}(x_{i-1}),</math>
<math>S_i\left(x_{i-1}\right) = S_{i-1}(x_{i-1}),</math>

где <math>i</math> меняется от <math>1</math> до <math>N,</math> а условия интерполяции в виде

<math>S_i\left(x_{i}\right) = f(x_{i}).</math>

Обозначим<math>: \quad h_i = x_i - x_{i-1}\quad (i = \overline{1,N}), \quad f_{i} = f(x_{i})\quad (i = \overline{0,N})</math>

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

<math id="ai">a_{i} = f(x_{i})</math>;
<math id="di">d_{i} = \frac{c_{i} - c_{i - 1}}{3 \cdot h_{i}}</math>;
<math>b_{i} = \frac{a_{i} - a_{i - 1}}{h_{i}} + \frac{2 \cdot c_{i} + c_{i - 1}}{3} \cdot h_{i}</math>;
<math id="ci">c_{i - 1} \cdot h_{i} + 2 \cdot c_{i} \cdot(h_{i} + h_{i+1}) + c_{i + 1} \cdot h_{i+1} = 3 \cdot \left(\frac{a_{i+1} - a_{i}}{h_{i+1}} - \frac{a_{i} - a_{i - 1}}{h_{i}}\right)</math>,
причем <math>c_{N} = S(x_{N}) = 0</math> и <math>c_{1} - 3 \cdot d_{1} \cdot h_{1} = S(x_{0}) = 0</math>.

Если учесть, что <math>c_{0} = c_{N} = 0</math>, то вычисление <math>c</math> можно провести с помощью метода прогонки для трёхдиагональной матрицы.

Литература

  1. Шаблон:Книга
  2. Шаблон:Книга
  3. Шаблон:Книга
  4. Шаблон:Книга

Ссылки

Примечания

Шаблон:Примечания

Шаблон:Rq Шаблон:Кривые