Una función spline es una función que interpola varios puntos $(x_j, y_j)$: es un polinomio cúbico $S_j$ en cada intervalo $(x_{j},x_{j+1})$ que interpola los valores dados:
y además:
Estas condiciones plantean un sistema de $4n$ ecuaciones y $4n-2$ incógnitas, de modo que es habitual completarlo con una condición extra en cada extremo: una en $x_0$ y otra en $x_n$ (aunque también es habitual imponer una condición extra en $x_1$ y otra en $x_{n-1}$).
xs = [1:10];
ys = zeros(1,10);
ys(3)=1;
% Evaluamos en un array de puntos x_eval, para dibujar el spline
x_eval = linspace(1,10,200);
y_eval = spline(xs, ys, x_eval);
hold on;
plot(xs, ys, 'o');
plot(x_eval, y_eval,'-');
title('Spline interpolador')
xlabel('x')
ylabel('y')
hold off;
legend('nodos de interpolacion', 'spline')
Lee la documentación de spline
:
Cuando buscamos el polinomio $P(x)$ tal que $f(x_i)=y_i$ para un conjunto $x_0, \dots, x_n$, la solución se puede expresar en la forma:
$$ f(x)=\sum_{i=0}^n y_i L_{n,i}(x) $$para los polinomios de la base de Lagrange:
$$ L_{n,i} = \prod_{k=0,k\neq i}\frac{x-x_k}{x_i-x_k} $$El polinomio $L_{n,i}$ "el único polinomio de grado $\leq n$ tal que": \begin{split} L_{n,i}(x_k)=0 & \text{ si } k\neq i \\ L_{n,i}(x_i)=1 \end{split}
Para interpolar sobre un conjunto $x_0,\dots,x_n$, de modo que $f(x_i)=y_i$: $$ f(x)=\sum_{i=0}^n y_i B_{i}(x) $$ donde $B_i$ es _"la única spline cúbica natural en los puntos $x_0,\dots,x_n$ tal que": $$ \begin{array}{rr} B{i}(xk)=0 & \text{ si } k\neq i \ B{i}(x_i)=1 \end{array} $$
Definimios $\mathcal{S}_{x_0,\dots,x_n}$ como el conjunto de todas las funciones de clase $\mathcal{C}^{2}$ que además es un polinomio cúbico en cada intervalo $[x_i,x_{i+1}]$, y cuya segunda derivada se anula en $x_0$ y en $x_n$.
$a,b\in\mathbb{R}, f,g\in\mathcal{S}_{x_0,\dots,x_n} \Rightarrow af+bg\in\mathcal{S}_{x_0,\dots,x_n} $
La fórmula de antes: $$ f(x)=\sum_{i=0}^n y_i B_{i}(x) $$ es fácil de demostrar: la función de la derecha es una spline cúbica con condiciones de frontera naturales tal que $f(x_i)=y_i$, pero sabemos que sólo hay función que verifique estas condiciones.