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 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 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 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 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 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 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].}
В іншому мовному розділі є повніша стаття B-spline (англ.) . Ви можете допомогти, розширивши поточну статтю за допомогою
перекладу з англійської.
(грудень 2020) Дивитись автоперекладену версію статті з мови «англійська». Перекладач повинен розуміти, що відповідальність за кінцевий вміст статті у Вікіпедії несе саме автор редагувань. Онлайн-переклад надається лише як корисний інструмент перегляду вмісту зрозумілою мовою. Не використовуйте невичитаний і невідкоригований машинний переклад у статтях української Вікіпедії! Машинний переклад Google є корисною відправною точкою для перекладу, але перекладачам необхідно виправляти помилки та підтверджувати точність перекладу, а не просто скопіювати машинний переклад до української Вікіпедії. Не перекладайте текст, який видається недостовірним або неякісним. Якщо можливо, перевірте текст за посиланнями, поданими в іншомовній статті. Докладні рекомендації: див. Вікіпедія:Переклад .