# B-spline

En el subcampo matemático de análisis numérico, una B-spline o Basis spline (o traducido una línea polinómica suave básica), es una función spline que tiene el mínimo soporte con respecto a un determinado grado, suavidad y partición del dominio. Un teorema fundamental establece que cada función spline de un determinado grado, suavidad y partición del dominio, se puede representar como una combinación lineal de B-splines del mismo grado y suavidad, y sobre la misma partición. El término B-spline fue acuñado por Isaac Jacob Schoenberg y es la abreviatura de spline básica. Las B-splines pueden ser evaluadas de una manera numéricamente estable por el algoritmo de De Boor. De un modo simplificado, se han creado variantes potencialmente más rápidas que el algoritmo de Boor, pero adolecen comparativamente de una menor estabilidad.
En el subcampo de la informática de diseño asistido por computadora y de gráficos por computadora, el término B-spline se refiere con frecuencia a una curva parametrizada por otras funciones spline, que se expresan como combinaciones lineales de B-splines (en el sentido matemático anterior). Una B-spline es simplemente una generalización de una curva de Bézier, que puede evitar el fenómeno Runge sin necesidad de aumentar el grado de la B-spline.

## Definición

Dado m valores reales t$_i$, llamados nodos, con
    $t_{0}\leq t_{1}\leq \cdots \leq t_{m-1}$
una B-spline de grado n es una curva paramétrica
    $\mathbf {S} :[t_{0},t_{m-1}]\to \mathbb {R} ^{2}$
compuesta por una combinación lineal de B-splines básicas b$_{i,n}$ de grado n
    $\mathbf {S} (t)=\sum _{i=0}^{m-n-2}\mathbf {P} _{i}b_{i,n}(t){\mbox{ , }}t\in [t_{n-1},t_{m-n}]$.
Los P$_i$ se llaman puntos de control o puntos de Boor. Hay m-(n+1) puntos de control que forman una envoltura convexa.
Las m-(n+1) B-splines básicas de grado n se pueden definir mediante la fórmula de recursión Cox-de Boor
    $b_{j,0}(t):=\left\{{\begin{matrix}1&\mathrm {si} \quad t_{j}\leq t<t_{j+1}\\0&{\text{resto}}\end{matrix}}\right.$
    $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).$
Cuando los nodos son equidistantes, la B-spline se dice que es uniforme, de otro modo sería no uniforme. Si dos nodos t$_j$ son idénticos, cualquiera de las posibles formas indeterminadas 0/0 se consideran 0.
Nótese que j+n+1 no puede exceder de m-1, lo que limita tanto a j como a n.

### B-spline uniforme

Cuando la B-spline es uniforme, las B-splines básicas para un determinado grado n son solo copias cambiadas de una a otra. Una alternativa no recursiva de la definición de la B-splines m-n+1 básica es
    $b_{j,n}(t)=b_{n}(t-t_{j}),\qquad \;j=0,\ldots ,m-n-1$
con
    $b_{n}(t):={\frac {n+1}{n}}\sum _{i=0}^{n+1}\omega _{i,n}(t-t_{i})_{+}^{n}\,\;$
y
    $\omega _{i,n}:=\prod _{j=0,j\neq i}^{n+1}{\frac {1}{t_{j}-t_{i}}}\,\;$
dónde
    $(t-t_{i})_{+}^{n}\,\;$
es la función de potencia truncada definida como
    $(t-t_{i})_{+}^{n}=\left\{{\begin{matrix}0&{\text{si}}\quad t<t_{i}\\(t-t_{i})^{n}&{\text{si}}\quad t\geq t_{i}\end{matrix}}\right.$

### B-spline cardinal

Si se define B$_0$ como la función característica de $[-{\tfrac {1}{2}},{\tfrac {1}{2}}]$, y B$_k$ recursivamente como el producto convolución
    $B_{k}:=B_{k-1}*B_{0},~k=1,2,\dots$
entonces B$_k$ se llaman B-splines cardinales (centradas). Esta definición se remonta a Schoenberg.
B$_k$ tiene soporte compacto $[-{\tfrac {k+1}{2}},{\tfrac {k+1}{2}}]$ y es una función impar. Como $k\rightarrow \infty$ las B-splines cardinales normalizadas tienden a la función de Gauss.