Splines

 Fundamento teórico

Los splines son funciones por tramos que se utilizan para interpolar un conjunto de puntos de forma suave y continua. En particular, los splines cúbicos usan polinomios de tercer grado en cada subintervalo [xi,xi+1][x_i, x_{i+1}], con la condición de que la función, su primera derivada y su segunda derivada sean continuas en todos los puntos del dominio.

Un spline cúbico entre cada par de puntos xix_i y xi+1x_{i+1} se expresa como:

Si(x)=ai+bi(xxi)+ci(xxi)2+di(xxi)3S_i(x) = a_i + b_i(x - x_i) + c_i(x - x_i)^2 + d_i(x - x_i)^3

Estos coeficientes se calculan de forma que:

  • Si(xi)=yiS_i(x_i) = y_i

  • Si(xi+1)=yi+1S_i(x_{i+1}) = y_{i+1}

  • Las derivadas primera y segunda son continuas en cada punto intermedio.

  • En los extremos se pueden aplicar condiciones naturales (S(x0)=S(xn)=0S''(x_0) = S''(x_n) = 0) o clamped (valores conocidos de la derivada).


Pasos del algoritmo

  1. Obtener los puntos (xi,yi)(x_i, y_i).

  2. Calcular hi=xi+1xih_i = x_{i+1} - x_i para cada intervalo.

  3. Armar y resolver el sistema de ecuaciones para encontrar los coeficientes cic_i (segundas derivadas).

  4. Calcular los coeficientes bib_i y did_i a partir de los cic_i.

  5. Construir los polinomios Si(x)S_i(x) para cada intervalo.

  6. Evaluar el spline para cualquier valor xx deseado.


Ejemplo resuelto paso a paso

Dado:

xf(x)011220\begin{array}{|c|c|} \hline x & f(x) \\ \hline 0 & 1 \\ 1 & 2 \\ 2 & 0 \\ \hline \end{array}

Usaremos splines cúbicos naturales (S(x0)=S(x2)=0S''(x_0) = S''(x_2) = 0).

  • h0=1h_0 = 1, h1=1h_1 = 1

  • Sistema a resolver:

{h0c0+2(h0+h1)c1+h1c2=3(y2y1h1y1y0h0)Con c0=0,c2=02(1+1)c1=3(021211)=3(21)=94c1=9c1=2.25\begin{cases} h_0 c_0 + 2(h_0 + h_1) c_1 + h_1 c_2 = 3\left(\frac{y_2 - y_1}{h_1} - \frac{y_1 - y_0}{h_0}\right) \\ \text{Con } c_0 = 0, c_2 = 0 \end{cases} \Rightarrow 2(1+1)c_1 = 3( \frac{0-2}{1} - \frac{2-1}{1}) = 3(-2 - 1) = -9 \Rightarrow 4c_1 = -9 \Rightarrow c_1 = -2.25

Luego se calculan:

b0=y1y0h0h0(2c0+c1)3=11(0+(2.25))3=1+0.75=1.75b_0 = \frac{y_1 - y_0}{h_0} - \frac{h_0(2c_0 + c_1)}{3} = 1 - \frac{1(0 + (-2.25))}{3} = 1 + 0.75 = 1.75
d0=c1c03h0=2.253=0.75d_0 = \frac{c_1 - c_0}{3h_0} = \frac{-2.25}{3} = -0.75

Entonces, el primer tramo es:

S0(x)=1+1.75(x0)+0(x0)20.75(x0)3S_0(x) = 1 + 1.75(x - 0) + 0(x - 0)^2 - 0.75(x - 0)^3

Código del método (Python)

import numpy as np import matplotlib.pyplot as plt from scipy.interpolate import CubicSpline # Datos x = np.array([0, 1, 2]) y = np.array([1, 2, 0]) # Spline cúbico natural cs = CubicSpline(x, y, bc_type='natural') # Evaluación x_new = np.linspace(0, 2, 100) y_new = cs(x_new) # Gráfica plt.plot(x, y, 'ro', label='Puntos') plt.plot(x_new, y_new, label='Spline Cúbico') plt.title("Interpolación por Splines Cúbicos") plt.xlabel("x") plt.ylabel("f(x)") plt.grid(True) plt.legend() plt.show()

Resultado



Conclusión sobre su uso y aplicación en la vida real

La interpolación por splines cúbicos es una herramienta esencial en computación científica, ingeniería y diseño gráfico. A diferencia de otros métodos como la interpolación de Lagrange, los splines evitan oscilaciones indeseadas y permiten una interpolación suave incluso con muchos puntos.

Aplicaciones:

  • Diseño asistido por computadora (CAD).

  • Animación y gráficos por computadora.

  • Procesamiento de señales y audio.

  • Geometría computacional y modelado 3D.

  • Análisis de datos experimentales.

Ventajas:

  • Alta precisión local.

  • Suavidad garantizada.

  • Evita oscilaciones de polinomios de alto grado.

Desventajas:

  • Cálculo más complejo.

  • Necesita resolver sistemas de ecuaciones.

Comentarios

Entradas más populares de este blog

Métodos Numéricos: Cuando la Matemática se Vuelve Práctica