next up previous
Next: 8. Integración numérica Up: 7. Interpolación Previous: 7.2 Interpolación de splines

7.3 Splines cúbicos

El spline cúbico (k=3) es el spline más empleado, debido a que proporciona un excelente ajuste a los puntos tabulados y su cálculo no es excesivamente complejo.

Sobre cada intervalo $[t_{0},t_{1}], [t_{1},t_{2}], \dots,[t_{n-1},t_{n}]$, S está definido por un polinomio cúbico diferente. Sea Si el polinomio cúbico que representa a S en el intervalo [ti,ti+1], por tanto:

\begin{displaymath}S(x) = \left\{\begin{array}{ll}S_{0}(x) & x \in \left[ t_......1}(x) & x \in \left[ t_{n-1},t_{n} \right)\end{array}\right.\end{displaymath}

Los polinomios Si-1 y Si interpolan el mismo valor en el punto ti, es decir, se cumple:

Si-1(ti) = yi = Si(ti)   $\displaystyle (1 \leq i \leq n-1)$  
 

por lo que se garantiza que S es continuo en todo el intervalo. Además, se supone que S' y S'' son continuas, condición que se emplea en la deducción de una expresión para la función del spline cúbico.

Aplicando las condiciones de continuidad del spline S y de las derivadas primera S' y segunda S'', es posible encontrar la expresión analítica del spline. No vamos a obtener esta expresión, ya que su demostración queda fuera del ámbito de estos apuntes. Simplemente diremos que la expresión resultante es:

\begin{displaymath}\begin{array}{lll}S_{i}(x) & = & \frac{z_{i}}{6h_{i}}(t_{i+......{h_{i}} - \frac{z_{i}h_{i}}{6}\right) (t_{i+1}-x)\end{array}\end{displaymath}

En la expresión anterior, hi=ti+1-ti$z_{0}, z_{1},\dots, z_{n}$ son incógnitas. Para determinar sus valores, utilizamos las condiciones de continuidad que deben cumplir estas funciones. El resultado (que tampoco vamos a demostrar) es:

\begin{displaymath}h_{i-1}z_{i-1} + 2(h_{i}+h_{i-1})z_{i} + h_{i}z_{i+1} =\frac{6}{h_{i-1}}(y_{i+1}-y_{i}) - \frac{6}{h_{i-1}}(y_{i}-y_{i-1})\end{displaymath}

La ecuación anterior, con $i=1,2,\dots,n-1$ genera un sistema de n-1ecuaciones lineales con n+1 incógnitas $z_{0}, z_{1},\dots, z_{n}$. Podemos elegir z0 y z1 de forma arbitraria y resolver el sistema de ecuaciones resultante para obtener los valores de $z_{1},z_{2},\dots,z_{n-1}$. Una elección especialmente adecuada es hacer z0=z1=0. La función spline resultante se denomina spline cúbico natural y el sistema de ecuaciones lineal expresado en forma matricial es:

 \begin{displaymath}\left(\begin{array}{cccccc}u_{1} & h_{1} & & & & \\h_{......{3} \\ \vdots \\ \nu_{n-2} \\\nu_{n-1}\end{array} \right)\end{displaymath} (70)
 

en donde:

  
hi = ti+1-ti  
ui = $\displaystyle 2(h_{i}+h_{i-1})- \frac{h_{i-1}^{2}}{u_{i-1}}$  
bi = $\displaystyle \frac{6}{h_{i}}(y_{i+1}- y_{i})$  
$\displaystyle \nu_{i}$ = $\displaystyle b_{i} - b_{i-1} - \frac{h_{i-1}\nu_{i-1}}{u_{i-1}}$ (71)
  
 
 
  
Figure: Algoritmo para encontrar los coeficientes zi de un spline cúbico.
\begin{figure}\begin{center}\begin{tabular}{\vert l\vert}\hline \\~~~~~......($z_{i}$ ) \\~ \\\hline\end{tabular} \end{center}\protect\end{figure}
  

Este sistema de ecuaciones, que es tridiagonal, se puede resolver mediante eliminación gaussiana sin pivoteo como se muestra en la figura (18). El código acepta como entrada un conjunto de nodos (ti) y el conjunto de los valores de la función correspondiente (yi) y produce un vector con los vectores zi. Por último, el valor del spline S en un punto xcualquiera interpolado se puede calcular de forma eficiente empleando la siguiente expresión:

 \begin{displaymath}S_{i}(x) = y_{i} +(x-t_{i})\left[ C_{i}+(x-t_{i}) \left[ B_{i}+(x-t_{i})A_{i} \right]\right]\end{displaymath} (72)
 

en donde

Ai = $\displaystyle \frac{1}{6h_{i}}(z_{i+1}-z_{i})$  
Bi = $\displaystyle \frac{z_{i}}{2}$  
Ci = $\displaystyle -\frac{h_{i}}{6}z_{i+1} - \frac{h_{i}}{3}z_{i} +\frac{1}{h_{i}}(y_{i+1}-y_{i})$ (73)
  

Veamos un ejemplo para ilustrar el empleo de los splines cúbicos para interpolar los valores de una tabla. En la tabla (1) se muestran algunos valores de una serie de valores tabulados a intervalos regulares de la función $f(x)=\sqrt{x}$ en el intervalo [0,2.25]. También se indican los valores interpolados empleando el correspondiente spline cúbico así como el error absoluto cometido. Obsérvese que el error es cero para los nudos. En la figura (19) se representan gráficamente los valores tabulados.
 
 

 
Table: Valores interpolados mediante un spline cúbico para la función $y=\sqrt {x}$ e indicación del error cometido (en valor absoluto).
x $\sqrt{x}$ Si(x) $\vert\varepsilon_{a}(x)\vert$
0.0000 0.0000 0.0000 0.0000E+00
0.0625   0.1426 1.0732E-01
0.1250   0.2782 7.5266E-02
0.1875   0.3997 3.3261E-02
0.2500 0.5000 0.5000 0.0000E+00
0.3125   0.5744 1.5440E-02
0.3750   0.6285 1.6155E-02
0.4375   0.6701 8.6732E-03
0.5000 0.7071 0.7071 0.0000E+00
       
1.7500 1.3228 1.3228 0.0000E+00
1.8125   1.3462 6.8994E-07
1.8750   1.3693 5.9953E-06
1.9375   1.3919 8.7004E-06
2.0000 1.4142 1.4142 0.0000E+00
2.0625   1.4361 2.4522E-05
2.1250   1.4577 4.7329E-05
2.1875   1.4790 4.6215E-05
2.2500 1.5000 1.5000 0.0000E+00
 
  

En la figura (20) se muestra otro ejemplo. Se representan gráficamente los puntos interpolados mediante una función spline cúbica para la función y=sen(x).
 
 

   
Figure: Representación de la función $y=\sqrt {x}$. Los círculos representan los valores tabulados de la función y la línea continua los puntos interpolados mediante una función spline cúbica.
[bb=560 195 70 580,scale=0.60,clip=true]eps/spline-3
  
  
Figure: Representación de la función y=sen(x). Los círculos representan los valores tabulados de la función y la línea continua los puntos interpolados mediante una función spline cúbica.
[bb=560 195 70 580,scale=0.60,clip=true]eps/spline-4
  


next up previous
Next: 8. Integración numérica Up: 7. Interpolación Previous: 7.2 Interpolación de splines 
Wladimiro Diaz Villanueva

1998-05-11