Кубічний сплайн — гладка функція, область визначення якої розбито на скінченне число відрізків, на кожному з яких вона збігається з деяким кубічним многочленом.
Функція
f
(
x
)
{\displaystyle f(x)}
задано на відрізку
[
a
,
b
]
{\displaystyle [a,b]}
, розбитому на частини
[
x
i
−
1
,
x
i
]
{\displaystyle [x_{i-1},x_{i}]}
,
a
=
x
0
<
x
1
<
.
.
.
<
x
N
=
b
{\displaystyle a=x_{0}<x_{1}<...<x_{N}=b}
. Кубічним сплайном дефекту 1 (різниця між степенем і гладкістю сплайна) називається функція
S
(
x
)
{\displaystyle S(x)}
, яка:
на кожному відрізку
[
x
i
−
1
,
x
i
]
{\displaystyle [x_{i-1},x_{i}]}
є многочленом степеня не вище від трьох;
має неперервні першу і другу похідні на всьому відрізку
[
a
,
b
]
{\displaystyle [a,b]}
;
в точках
x
i
{\displaystyle x_{i}}
виконується рівність
S
(
x
i
)
=
f
(
x
i
)
{\displaystyle S(x_{i})=f(x_{i})}
, тобто сплайн
S
(
x
)
{\displaystyle S(x)}
інтерполює функцію
f
{\displaystyle f}
в точках
x
i
{\displaystyle x_{i}}
.
Для однозначного задання сплайна перелічених умов недостатньо, для побудови сплайна необхідно накласти додаткові вимоги — граничні умови:
«Природний сплайн» — граничні умови виду:
S
″
(
a
)
=
S
″
(
b
)
=
0
{\displaystyle S''(a)=S''(b)=0}
;
Неперервність другої похідної — граничні умови виду:
S
‴
(
a
)
=
S
‴
(
b
)
=
0
{\displaystyle S'''(a)=S'''(b)=0}
;
Періодичний сплайн — граничні умови виду:
S
′
(
a
)
=
S
′
(
b
)
{\displaystyle S'(a)=S'(b)}
і
S
″
(
a
)
=
S
″
(
b
)
{\displaystyle S''(a)=S''(b)}
.
Теорема. Для будь-якої функції
f
{\displaystyle f}
і будь-якого розбиття відрізка
[
a
,
b
]
{\displaystyle [a,b]}
на частини
[
x
i
−
1
,
x
i
]
{\displaystyle [x_{i-1},x_{i}]}
існує рівно один природний сплайн
S
i
(
x
)
{\displaystyle S_{i}(x)}
, що задовольняє переліченим вище умовам.
Ця теорема є наслідком загальнішої теореми Шенберга — Вітні про умови існування інтерполяційного сплайна.
Побудова
ред.
На кожному відрізку
[
x
i
−
1
,
x
i
]
,
i
=
1
,
N
¯
{\displaystyle [x_{i-1},x_{i}],\ i={\overline {1,N}}}
функція
S
(
x
)
{\displaystyle S(x)}
є многочленом третього степеня
S
i
(
x
)
{\displaystyle S_{i}(x)}
, коефіцієнти якого треба визначити. Запишемо для зручності
S
i
(
x
)
{\displaystyle S_{i}(x)}
у вигляді:
S
i
(
x
)
=
a
i
+
b
i
(
x
−
x
i
)
+
c
i
(
x
−
x
i
)
2
+
d
i
(
x
−
x
i
)
3
{\displaystyle S_{i}(x)=a_{i}+b_{i}(x-x_{i})+{c_{i}}(x-x_{i})^{2}+{d_{i}}(x-x_{i})^{3}}
тоді
S
i
(
x
i
)
=
a
i
,
S
i
′
(
x
i
)
=
b
i
,
S
i
″
(
x
i
)
=
2
c
i
,
S
i
‴
(
x
i
)
=
6
d
i
i
=
1
,
N
¯
.
{\displaystyle 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}}.}
Умови неперервності всіх похідних до другого порядку включно записуються у вигляді
S
i
(
x
i
−
1
)
=
S
i
−
1
(
x
i
−
1
)
,
{\displaystyle S_{i}\left(x_{i-1}\right)=S_{i-1}(x_{i-1}),}
S
i
′
(
x
i
−
1
)
=
S
i
−
1
′
(
x
i
−
1
)
,
{\displaystyle S'_{i}\left(x_{i-1}\right)=S'_{i-1}(x_{i-1}),}
S
i
″
(
x
i
−
1
)
=
S
i
−
1
″
(
x
i
−
1
)
,
{\displaystyle S''_{i}\left(x_{i-1}\right)=S''_{i-1}(x_{i-1}),}
де
i
{\displaystyle i}
змінюється від
1
{\displaystyle 1}
до
N
,
{\displaystyle N,}
а умови інтерполяції у вигляді
S
i
(
x
i
)
=
f
(
x
i
)
.
{\displaystyle S_{i}\left(x_{i}\right)=f(x_{i}).}
Позначимо
:
h
i
=
x
i
−
x
i
−
1
(
i
=
1
,
N
¯
)
,
f
i
=
f
(
x
i
)
(
i
=
0
,
N
¯
)
{\displaystyle :\quad h_{i}=x_{i}-x_{i-1}\quad (i={\overline {1,N}}),\quad f_{i}=f(x_{i})\quad (i={\overline {0,N}})}
Звідси отримуємо формули для обчислення коефіцієнтів «природного сплайна»:
a
i
=
f
(
x
i
)
{\displaystyle a_{i}=f(x_{i})}
;
d
i
=
c
i
−
c
i
−
1
3
⋅
h
i
{\displaystyle d_{i}={\frac {c_{i}-c_{i-1}}{3\cdot h_{i}}}}
;
b
i
=
a
i
−
a
i
−
1
h
i
+
2
⋅
c
i
+
c
i
−
1
3
⋅
h
i
{\displaystyle b_{i}={\frac {a_{i}-a_{i-1}}{h_{i}}}+{\frac {2\cdot c_{i}+c_{i-1}}{3}}\cdot h_{i}}
;
c
i
−
1
⋅
h
i
+
2
⋅
c
i
⋅
(
h
i
+
h
i
+
1
)
+
c
i
+
1
⋅
h
i
+
1
=
3
⋅
(
a
i
+
1
−
a
i
h
i
+
1
−
a
i
−
a
i
−
1
h
i
)
{\displaystyle 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)}
,
причому
c
N
=
S
″
(
x
N
)
=
0
{\displaystyle c_{N}=S''(x_{N})=0}
і
c
1
−
3
⋅
d
1
⋅
h
1
=
S
″
(
x
0
)
=
0
{\displaystyle c_{1}-3\cdot d_{1}\cdot h_{1}=S''(x_{0})=0}
.
Якщо врахувати, що
c
0
=
c
N
=
0
{\displaystyle c_{0}=c_{N}=0}
, то
c
{\displaystyle c}
можна обчислити методом прогонки для тридіагональної матриці .
Примітки
ред.
Література
ред.
de Boor, Carl . A Practical Guide to Splines. — New York : Springer-Verlag, 1978.
Роджерс Д., Адамс Дж. Математические основы машинной графики. — 2-е, перераб. и доп. — М. : Мир, 2001. — ISBN 5-03-002143-4 .
Костомаров Д. П. , Фаворский А. П. Вводные лекции по численным методам.
Волков Е. А. Глава 1. Приближение функций многочленами. § 11. Сплайны // Численные методы. — Учеб. пособие для вузов. — 2-е изд., испр. — М . : Наука, 1987. — С. 63-68.
Посилання
ред.