Кубический сплайн: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Построение: изменены индексы интервалов
 
(не показано 8 промежуточных версий 8 участников)
Строка 2: Строка 2:


== Описание ==
== Описание ==
Функция <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>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>[x_{i-1},x_i]</math> является [[многочлен]]ом степени не выше третьей;
Строка 19: Строка 19:


== Построение ==
== Построение ==
На каждом отрезке <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>[x_{i},x_{i+1}],\ i=\overline{0,N-1}</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(x) = a_i + b_i(x - x_i) + {c_i}(x-x_i)^2 + {d_i}(x - x_i)^3</math>
Строка 25: Строка 25:
тогда
тогда


:<math>S_i\left(x_i\right) = a_i, \quad S'_i(x_i) = b_i, \quad S''_i(x_i) = 2c_i, \quad i=\overline{1,N}.</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>


Условия непрерывности всех производных до второго порядка включительно
Условия непрерывности всех производных, до второго порядка включительно, записываются в виде <br />
записываются в виде <br />
:<math>S_i\left(x_{i-1}\right) = S_{i-1}(x_{i-1}),</math><br />
:<math>S_i\left(x_{i-1}\right) = S_{i-1}(x_{i-1}),</math><br />
:<math>S'_i\left(x_{i-1}\right) = S'_{i-1}(x_{i-1}),</math><br />
:<math>S'_i\left(x_{i-1}\right) = S'_{i-1}(x_{i-1}),</math><br />
Строка 41: Строка 41:
:<math id="ai">a_{i} = f(x_{i})</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 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>b_{i} = \frac{a_{i} - a_{i - 1}}{h_{i}} - \frac{2 \cdot c_{i-1} + c_{i}}{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 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_{N} = S''(x_{N}) = 0</math> и <math>c_{1} - 3 \cdot d_{1} \cdot h_{1} = S''(x_{0}) = 0</math> <ref>{{Книга|автор=Аристова Е. Н., Завьялова Н. А., Лобанов А. И.|заглавие=Практические занятия по вычислительной математике Часть 1|год=2014|язык=ru|страницы=159-160|страниц=243|isbn=978-5-7417-0541-4}}</ref>.
Если учесть, что <math>c_{0} = c_{N} = 0</math>, то вычисление <math>c</math> можно провести с помощью [[Метод прогонки|метода прогонки]] для [[трёхдиагональная матрица|трёхдиагональной матрицы]].
Если учесть, что <math>c_{0} = c_{N} = 0</math>, то вычисление <math>c</math> можно провести с помощью [[Метод прогонки|метода прогонки]] для [[трёхдиагональная матрица|трёхдиагональной матрицы]].


== Литература ==
== Литература ==
# {{книга | автор = de Boor, Carl | заглавие = A Practical Guide to Splines | издательство=Springer-Verlag | место=New York | год = 1978 | ref = Boor}}
# {{книга | автор = de Boor, Carl | заглавие = A Practical Guide to Splines | ссылка = https://archive.org/details/practicalguideto0027debo | издательство=Springer-Verlag | место=New York | год = 1978 | ref = Boor}}
# {{книга|автор=Роджерс Д., Адамс Дж.|заглавие=Математические основы машинной графики|издательство=Мир|место=М.|Издание=2-е, перераб. и доп.|станиц=604|год=2001|isbn=5-03-002143-4}}
# {{книга|автор=Роджерс Д., Адамс Дж.|заглавие=Математические основы машинной графики|издательство=Мир|место=М.|Издание=2-е, перераб. и доп.|станиц=604|год=2001|isbn=5-03-002143-4}}
# {{книга|автор=[[Костомаров, Дмитрий Павлович|Костомаров Д. П.]], [[Фаворский, Антон Павлович|Фаворский А. П.]]|заглавие=Вводные лекции по численным методам}}
# {{книга|автор=[[Костомаров, Дмитрий Павлович|Костомаров Д. П.]], [[Фаворский, Антон Павлович|Фаворский А. П.]]|заглавие=Вводные лекции по численным методам}}

Текущая версия от 06:38, 15 октября 2024

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

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

  • на каждом отрезке является многочленом степени не выше третьей;
  • имеет непрерывные первую и вторую производные на всём отрезке ;
  • в точках выполняется равенство , т. е. сплайн интерполирует функцию в точках .

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

  1. "Естественный сплайн" — граничные условия вида: ;
  2. Непрерывность второй производной — граничные условия вида: ;
  3. Периодический сплайн — граничные условия вида: и .

Теорема: Для любой функции и любого разбиения отрезка на части существует ровно один естественный сплайн , удовлетворяющий перечисленным выше условиям.

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

Построение

[править | править код]

На каждом отрезке функция есть полином третьей степени , коэффициенты которого надо определить. Запишем для удобства в виде:

тогда

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




где меняется от до а условия интерполяции в виде

Обозначим

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

;
;
;
,
причем и [1].

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

Литература

[править | править код]
  1. de Boor, Carl. A Practical Guide to Splines. — New York: Springer-Verlag, 1978.
  2. Роджерс Д., Адамс Дж. Математические основы машинной графики. — М.: Мир, 2001. — ISBN 5-03-002143-4.
  3. Костомаров Д. П., Фаворский А. П. Вводные лекции по численным методам.
  4. Волков Е. А. Глава 1. Приближение функций многочленами. § 11. Сплайны // Численные методы. — Учеб. пособие для вузов. — 2-е изд., испр.. — М.: Наука, 1987. — С. 63-68. — 248 с.

Примечания

[править | править код]
  1. Аристова Е. Н., Завьялова Н. А., Лобанов А. И. Практические занятия по вычислительной математике Часть 1. — 2014. — С. 159-160. — 243 с. — ISBN 978-5-7417-0541-4.
  2. Boor, 1978.