B-сплайн — сплайн-функція , що має мінімальний носій для заданого степеня , гладкості та області визначення .
Фундаментальна теорема стверджує, що довільна сплайн-функція заданого степеня, гладкості і області визначення може бути представлена як лінійна комбінація B-сплайнів того ж степеня і гладкості на тій же області визначення.
Термін B-сплайн запровадив Ісак Яков Шонберг у 1978 році і є скороченням від словосполучення «базисний сплайн». B-сплайни є узагальненням кривих Без'є , вони допомагають уникнути феномену Рунге при високих степенях полінома.
Визначення
B-сплайн степеня n з заданими вузлами :
t
0
≤
t
1
≤
⋯
≤
t
m
{\displaystyle t_{0}\leq t_{1}\leq \cdots \leq t_{m}
та (m−n) контрольними точками
P
0
…
P
m
−
n
−
1
{\displaystyle \mathbf {P} _{0}\ldots \mathbf {P} _{m-n-1}
це параметрична крива , що складена з базисних B-сплайнів степеня n
S
(
t
)
=
∑
i
=
0
m
−
n
−
1
P
i
b
i
,
n
(
t
)
,
t
∈
[
t
n
,
t
m
−
n
]
.
{\displaystyle \mathbf {S} (t)=\sum _{i=0}^{m-n-1}\mathbf {P} _{i}b_{i,n}(t),\qquad t\in [t_{n},t_{m-n}].}
Базисні B-сплайни визначаються рекурсивними формулами:
b
j
,
0
(
t
)
:=
1
[
t
j
,
t
j
+
1
)
=
{
1
,
t
∈
[
t
j
,
t
j
+
1
)
0
,
t
∉
[
t
j
,
t
j
+
1
)
.
{\displaystyle b_{j,0}(t):=1_{[t_{j},t_{j+1})}={\begin{cases}1,&\quad t\in [t_{j},t_{j+1})\\0,&\quad t\notin [t_{j},t_{j+1})\end{cases}.}
b
j
,
n
(
t
)
:=
t
−
t
j
t
j
+
n
−
t
j
b
j
,
n
−
1
(
t
)
+
t
j
+
n
+
1
−
t
t
j
+
n
+
1
−
t
j
+
1
b
j
+
1
,
n
−
1
(
t
)
>
0
{\displaystyle b_{j,n}(t):={\frac {t-t_{j}{t_{j+n}-t_{j}b_{j,n-1}(t)+{\frac {t_{j+n+1}-t}{t_{j+n+1}-t_{j+1}b_{j+1,n-1}(t)\;\quad >0}
при
t
∈
[
t
j
,
t
j
+
n
+
1
)
.
{\displaystyle t\in [t_{j},\;t_{j+n+1}).}
При однаковій відстані між сусідніми вузлами B-сплайни називаються однорідними , в протилежному випадку — неоднорідними .
Однорідні B-сплайни
Для однорідних B-сплайнів, базисні B-сплайни однакового степеня є зміщеними екземплярами однієї функції. Нерекурсивним визначенням базисних B-сплайнів є
b
j
,
n
(
t
)
=
b
n
(
t
−
t
j
)
,
j
=
0
,
m
−
n
−
1
¯
,
{\displaystyle b_{j,n}(t)=b_{n}(t-t_{j}),\qquad \;j={\overline {0,m-n-1},}
де
b
n
(
t
)
:=
n
+
1
n
∑
i
=
0
n
+
1
ω
i
,
n
(
t
−
t
i
)
+
n
,
ω
i
,
n
:=
∏
j
=
0
,
j
≠
i
n
+
1
1
t
j
−
t
i
.
{\displaystyle b_{n}(t):={\frac {n+1}{n}\sum _{i=0}^{n+1}\omega _{i,n}(t-t_{i})_{+}^{n},\qquad \omega _{i,n}:=\prod _{j=0,j\neq i}^{n+1}{\frac {1}{t_{j}-t_{i}.}
Кардинальні B-сплайни
Визначимо B 0 як індикаторну функцію відрізку
[
−
1
2
,
1
2
]
{\displaystyle [-{\tfrac {1}{2},{\tfrac {1}{2}]}
і B k рекурсивно через згортку
B
k
(
t
)
:=
B
0
(
t
)
∗
B
k
−
1
(
t
)
=
∫
R
B
0
(
t
−
τ
)
B
k
−
1
(
τ
)
d
τ
=
∫
t
−
1
2
t
+
1
2
B
k
−
1
(
τ
)
d
τ
,
k
∈
N
{\displaystyle B_{k}(t):=B_{0}(t)*B_{k-1}(t)=\int _{\mathbb {R} }B_{0}(t-\tau )B_{k-1}(\tau )\,d\tau =\int _{t-{\tfrac {1}{2}^{t+{\tfrac {1}{2}B_{k-1}(\tau )\,d\tau ,\quad k\in \mathbb {N} }
B k має носій
[
−
k
+
1
2
,
k
+
1
2
]
.
{\displaystyle [-{\tfrac {k+1}{2},{\tfrac {k+1}{2}].}
Приклади
Константні B-сплайни
Це найпростіші сплайни. Вони не є навіть неперервними .
b
j
,
0
(
t
)
=
1
[
t
j
,
t
j
+
1
)
B
0
(
t
)
=
1
[
−
1
2
,
1
2
)
.
{\displaystyle b_{j,0}(t)=1_{[t_{j},t_{j+1})}\qquad B_{0}(t)=1_{[-{\tfrac {1}{2},{\tfrac {1}{2})}.}
Лінійні B-сплайни
Лінійні B-сплайни є неперервними, але не диференційовними.
b
j
,
1
(
t
)
=
{
t
−
t
j
t
j
+
1
−
t
j
,
t
∈
[
t
j
,
t
j
+
1
)
t
j
+
2
−
t
t
j
+
2
−
t
j
+
1
,
t
∈
[
t
j
+
1
,
t
j
+
2
)
B
1
(
t
)
=
{
t
+
1
,
t
∈
[
−
1
,
0
)
1
−
t
,
t
∈
[
0
,
+
1
)
{\displaystyle b_{j,1}(t)={\begin{cases}{\frac {t-t_{j}{t_{j+1}-t_{j},&\quad t\in [t_{j},\;t_{j+1})\\{\frac {t_{j+2}-t}{t_{j+2}-t_{j+1},&\quad t\in [t_{j+1},\;t_{j+2})\end{cases}\qquad B_{1}(t)={\begin{cases}t+1,&t\in [-1,\;0)\\1-t,&t\in [0,\;+1)\end{cases}
Однорідні квадратичні B-сплайни
Є найбільш вживаною формою B-сплайнів.
b
2
(
t
)
=
b
j
,
2
(
t
)
=
{
1
2
(
t
−
t
j
)
2
,
t
∈
[
t
j
,
t
j
+
1
)
−
(
t
−
t
j
+
1
)
2
+
(
t
−
t
j
+
1
)
+
1
2
,
t
∈
[
t
j
+
1
,
t
j
+
2
)
1
2
(
1
−
(
t
−
t
j
+
2
)
)
2
,
t
∈
[
t
j
+
2
,
t
j
+
3
)
B
2
(
t
)
=
{
1
2
(
t
+
3
2
)
2
,
t
∈
[
−
3
2
,
−
1
2
)
3
4
−
t
2
,
t
∈
[
−
1
2
,
+
1
2
)
1
2
(
t
−
3
2
)
2
,
t
∈
[
1
2
,
3
2
)
{\displaystyle b_{2}(t)=b_{j,2}(t)={\begin{cases}{\frac {1}{2}(t-t_{j})^{2},&t\in [t_{j},\;t_{j+1})\\-(t-t_{j+1})^{2}+(t-t_{j+1})+{\frac {1}{2},&t\in [t_{j+1},\;t_{j+2})\\{\frac {1}{2}(1-(t-t_{j+2}))^{2},&t\in [t_{j+2},\;t_{j+3})\end{cases}\qquad B_{2}(t)={\begin{cases}{\frac {1}{2}(t+{\frac {3}{2})^{2},&t\in [-{\frac {3}{2},\;-{\frac {1}{2})\\{\frac {3}{4}-t^{2},&t\in [-{\frac {1}{2},\;+{\frac {1}{2})\\{\frac {1}{2}(t-{\frac {3}{2})^{2},&t\in [{\frac {1}{2},\;{\frac {3}{2})\end{cases}
В матричній формі:
S
i
(
t
)
=
[
t
2
t
1
]
1
2
[
1
−
2
1
−
2
2
0
1
1
0
]
[
p
i
−
1
p
i
p
i
+
1
]
,
t
∈
[
0
,
1
]
,
i
=
1
,
m
−
1
¯
{\displaystyle \mathbf {S} _{i}(t)={\begin{bmatrix}t^{2}&t&1\end{bmatrix}{\frac {1}{2}{\begin{bmatrix}1&-2&1\\-2&2&0\\1&1&0\end{bmatrix}{\begin{bmatrix}\mathbf {p} _{i-1}\\\mathbf {p} _{i}\\\mathbf {p} _{i+1}\end{bmatrix},\qquad t\in [0,1],\quad i={\overline {1,m-1}
Однорідні кубічні B-сплайни
b
3
(
t
)
=
b
j
,
3
(
t
)
=
{
1
6
(
t
−
t
j
)
3
,
t
∈
[
t
j
,
t
j
+
1
)
1
6
(
−
3
(
t
−
t
j
+
1
)
3
+
3
(
t
−
t
j
+
1
)
2
+
3
(
t
−
t
j
+
1
)
+
1
)
,
t
∈
[
t
j
+
1
,
t
j
+
2
)
.
.
.
,
t
∈
[
t
j
+
2
,
t
j
+
3
)
1
6
(
1
−
(
t
−
t
j
+
3
)
)
3
,
t
∈
[
t
j
+
3
,
t
j
+
4
)
{\displaystyle b_{3}(t)=b_{j,3}(t)={\begin{cases}{\frac {1}{6}(t-t_{j})^{3},&t\in [t_{j},\;t_{j+1})\\{\frac {1}{6}\left(-3(t-t_{j+1})^{3}+3(t-t_{j+1})^{2}+3(t-t_{j+1})+1\right),&t\in [t_{j+1},\;t_{j+2})\\...,&t\in [t_{j+2},\;t_{j+3})\\{\frac {1}{6}(1-(t-t_{j+3}))^{3},&t\in [t_{j+3},\;t_{j+4})\end{cases}
B
3
(
t
)
=
{
1
6
(
t
+
2
)
3
,
t
∈
[
−
2
,
−
1
)
1
6
(
−
3
t
3
−
6
t
2
+
4
)
,
t
∈
[
−
1
,
0
)
1
6
(
3
t
3
−
6
t
2
+
4
)
,
t
∈
[
0
,
1
)
1
6
(
−
t
+
2
)
3
,
t
∈
[
1
,
2
)
{\displaystyle B_{3}(t)={\begin{cases}{\frac {1}{6}(t+2)^{3},&t\in [-2,\;-1)\\{\frac {1}{6}(-3t^{3}-6t^{2}+4),&t\in [-1,\;0)\\{\frac {1}{6}(3t^{3}-6t^{2}+4),&t\in [0,\;1)\\{\frac {1}{6}(-t+2)^{3},&t\in [1,\;2)\end{cases}
В матричній формі:
S
i
(
t
)
=
[
t
3
t
2
t
1
]
1
6
[
−
1
3
−
3
1
3
−
6
3
0
−
3
0
3
0
1
4
1
0
]
[
p
i
−
1
p
i
p
i
+
1
p
i
+
2
]
,
t
∈
[
0
,
1
]
.
{\displaystyle \mathbf {S} _{i}(t)={\begin{bmatrix}t^{3}&t^{2}&t&1\end{bmatrix}{\frac {1}{6}{\begin{bmatrix}-1&3&-3&1\\3&-6&3&0\\-3&0&3&0\\1&4&1&0\end{bmatrix}{\begin{bmatrix}\mathbf {p} _{i-1}\\\mathbf {p} _{i}\\\mathbf {p} _{i+1}\\\mathbf {p} _{i+2}\end{bmatrix},\quad t\in [0,1].}
Див. також
Джерела
Посилання