Splines Cúbicos Roberto J León Vásquez rleon@alumnosinfutfsmcl Jorge Constanzo jconstan@alumnosinfutfsmcl Valparaíso, 24 de octubre de 2006 1 Interpolación con Splines Una función spline está formada por varios polinomios, cada uno definido sobre un subintervalo, que se unen entre sí obedeciendo a ciertas condiciones de continuidad Supongamos que disponemos de n + 1 puntos, a los que denominaremos nodos, tales que: t 0 < t 1 < < t n (1) Supongamos además que se ha fijado un entero k 0 Decimos entonces que una función spline de grado k con nodos en t 0, t 1,, t n es una función S que satisface las condiciones: 1 En cada intervalo [t i 1, t i ), S es un polinomio de grado menor o igual a k 2 S tiene una derivada de orden (k 1) continua en [t 0, t n ] Los splines de grado 0 son funciones constantes por zonas Una forma explícita de presentar un spline de grado 0 es la siguiente: S 0 (x) = c 0, x [t 0, t 1 ) S 1 (x) = c 1, x [t 1, t 2 ) S(x) = S n 1 (x) = c n 1, x [t n 1, t n ) Los intervalos [t i 1, t i ) no se intersectan entre sí, por lo que no hay ambigüedad en la definición de la función en los nodos Un spline de grado 1 se puede definir por: S 0 (x) = a 0 x + b 0, x [t 0, t 1 ) S 1 (x) = a 1 x + b 2, x [t 1, t 2 ) S(x) = S n 1 (x) = a n 1 x + b n 1, x [t n 1, t n )
Splines Cúbicos 2 En las figuras 1 y 2 se muestran las gráficas correspondientes a los splines de grado cero y de grado 1 respectivamente Figura 1: Spline de Grado Cero Figura 2: Spline de Grado 1
Splines Cúbicos 3 2 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 ],, [t n 1, t n ], S está definido por un polinomio cúbico diferente Sea S i el polinomio cúbico que representa a S en el intervalo [t i, t i+1 ], por tanto: S 0 (x) = S 0, x [t 0, t 1 ) S 1 (x) = S 1, x [t 1, t 2 ) S(x) = S n 1 (x) = S n 1, x [t n 1, t n ) Los polinomios S i 1 y S i interpolan el mismo valor en el punto t i, es decir, se cumple: S i 1 (t i ) = y i = S i (t i ) (1 i 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 splinela expresión resultante es: S i (x) = z i 6h i (t i+1 x) 3 + z i+1 ( ) 6h i (x t i ) 3 + yi+1 h i + z i+1h i 6 ( (x t i ) + yi h i z ih i 6 ) (t i+1 x) En la expresión anterior, h i = t i+1 t i y z 0, z 1,, z n son incógnitas Para determinar sus valores, utilizamos las condiciones de continuidad que deben cumplir estas funciones El resultado es: h i 1 z i 1 + 2(h i + h i 1 )z i + h i z i+1 = 6 h i 1 (y i+1 y i ) 6 h i 1 (y i y i 1 ) La ecuación anterior, con i = 1, 2,, n 1 genera un sistema de n 1 ecuaciones lineales con n + 1 incógnitas z 0, z 1,, z n Podemos elegir z 0 y z 1 de forma arbitraria y resolver el sistema de ecuaciones resultante para obtener los valores de z 1, z 2,, z n 1 Una elección especialmente adecuada es hacer z 0 = z 1 = 0 La función spline resultante se denomina spline cúbico natural y el sistema de ecuaciones lineal expresado en forma matricial es: u 1 h 1 h 1 u 2 h 2 h 2 u 3 h 3 h n 3 u n 2 h n 2 h n 2 u n 1 z 1 z 2 z 3 z n 2 z n 1 = ν 1 ν 2 ν 3 ν n 2 ν n 1 (2)
Splines Cúbicos 4 en donde: h i = t i+1 t i u i = 2(h i + h i 1 ) h2 i 1 u i 1 b i = 6 h i (y i+1 y i ) ν i = b i b i 1 h i 1ν i 1 u i 1 (3) Figura 3: Algoritmo para resolver los z i Este sistema de ecuaciones, que es tridiagonal, se puede resolver mediante eliminación gaussiana sin pivoteoun posible algoritmo para resolver este sistema se muestra en la figura 3El valor del spline S en un punto x cualquiera interpolado se puede calcular de forma eficiente empleando la siguiente expresión: S i (x) = y i + (x t i ) [C i + (x t i ) [B i + (x t i )A i ]] (4)
Splines Cúbicos 5 en donde 21 Ejercicio Ai = 1 6h i (z i+1 z i ) Bi = z i 2 Ci = h i 6 z i+1 h i 3 z i + 1 h i (y i+1 y i ) (5) Sea f(x) = x, con x [0, 3], y los puntos de apoyos se muestran en la siguiente tabla k x f(x) 0 0 0 1 05 07071 2 1 1 3 15 12247 4 2 14142 5 25 15811 6 3 17321 Primero, calculamos los coeficientes h i, b i,u i y v i, con las ecuaciones 3, dando por resultado: Luego se calculan los z i : i h i b i u i v i 0 05 84852 - - 1 05 35148 20-49704 2 05 26964 1875-37278 3 05 22740 186667 01757 4 05 20028 186607-04695 5 05 18120 186603-01454 i z i 0 0 1-19777 2-20297 3 015590 4-02307 5-00779 6 0 A continuación construimos los Splines cúbicos a partir de las fórmulas 4 y 5
Splines Cúbicos 6 S 0 (x) = y 0 + (x x 0 ) [C 0 + (x x 0 ) [B i + (x x 0 )A i ]] S 1 (x) = y 1 + (x x 1 ) [C 1 + (x x 1 ) [B i + (x x 1 )A i ]] S 2 (x) = y 2 + (x x 2 ) [C 2 + (x x 2 ) [B i + (x x 2 )A i ]] S 3 (x) = y 3 + (x x 3 ) [C 3 + (x x 3 ) [B i + (x x 3 )A i ]] S 4 (x) = y 4 + (x x 4 ) [C 4 + (x x 4 ) [B i + (x x 4 )A i ]] S 5 (x) = y 5 + (x x 5 ) [C 5 + (x x 5 ) [B i + (x x 5 )A i ]] Donde: y i = f(x i ), y i A i B i C i 0-016481 0 141412 1-000433 -098888 108024 2 018213-101486 095683 3-003221 007795 034002 4 001273-011534 039147 5 000649-003896 032148 A continuación se muestra un gráfico donde la línea azul describe la función y = x, y la línea roja es la interpolación realizada con splines cúbicos Podemos notar como el spline se va acomodando a la curva de la función y Figura 4: Gráfico comparativo