Cálculo numérico Interpolación cúbica por tramos. Integración numérica. 22 noviembre, 2010. 1 Interpolación cúbica por tramos Los interpolantes llamados splines tienen propiedades que los hacen útiles desde el punto de vista de las aplicaciones. A continuación obtendremos las ecuaciones que definen a la clase de splines cúbicos cuya tercera derivada cumple con cierta propiedad en los extremos del intervalo de definición. Partiremos de un conjunto de n parejas de números reales (xi , yi ), xi < xi+1 , i = 1, . . . , n − 1 para las cuales se desea construir una función de interpolación polinomial por tramos en el intervalo [x1 , xn ]. Las propiedades de s, la función de interpolación, son las siguientes: • el grado de los polinomios debe ser 3 • s debe ser dos veces continuamente diferenciable en [x1 , xn ]. De aquı́ en adelante nos referiremos a los elementos del conjunto {x1 , x2 , . . . , xn } como los nodos. Observa que la restricción sobre el grado de los polinomios obedece al comportamiento anómalo de la interpolación polinomial clásica. Un ejemplo muy difundido de este fenómeno es la llamada función de Runge, cuyos polinomios de interpolación oscilan en los extremos del intervalo conforme se incrementa el grado. Una manera de resolver el problema de las oscilaciones de los polinomios, asociado fundamentalmente con grados altos, consiste en construir una función de interpolación por tramos, en donde cada tramo es un polinomio de grado bajo, tı́picamente 2 ó 3. La construcción generalmente deja un par de grados de libertad, uno en cada extremo del intervalo [x1 , xn ], lo cual ofrece flexibilidad para determinar propiedades del interpolante en dichos puntos. Consideremos ahora las siguientes definiciones hi = xi+1 − xi , x − xi w= , hi w b = 1 − w, en términos de las cuales se formula la función de interpolación cúbica en el intervalo [xi , xi+1 ] s(x) = wyi+1 + wy b i + h2i [(w 3 − w)σi+1 + (w b3 − w)σ b i ], 1 (1) en donde σi , σi+1 son constantes a determinar. Observar que, independientemente de los valores de σi , σi+1 , se cumple s(xi ) = yi , s(xi+1 ) = yi+1 . Las definiciones anteriores tienen como finalidad calcular eficientemente los coeficientes de los polinomios de interpolación en cada segmento [xi , xi+1 ]. En términos formales hemos escogido una base adecuada del conjunto de los polinomios de grado ≤ 3. Esta base, en la variable w, es {w, 1 − w, w 3, (1 − w)3 }. (2) La formulación (1) es muy eficiente en términos computacionales debido a que solamente tiene dos parámetros a determinar por segmento: σi y σi+1 . Las derivadas de s juegan un papel muy importante, ya que en los nodos deben cumplirse las condiciones de diferenciabilidad. Utilizando la regla de la cadena y las definiciones de h, w, w b tenemos que: yi+1 − yi + hi [(3w 2 − 1)σi+1 − (3w b2 − 1)σi ], hi s′′ (x) = 6wσi+1 + 6wσ b i, 6(σi+1 − σi ) , s′′′ (x) = hi s′ (x) = (3) (4) (5) en particular s′′ es una función lineal de x que interpola los valores 6σi y 6σi+1 , es decir s′′ (xi ) = 6σi , s′′ (xi+1 ) = 6σi+1 . Observar que la relación anterior implica que se cumple la condición de continuidad de la segunda derivada del interpolante en cada nodo. La condición de continuidad de las primeras derivadas en los nodos se obtiene evaluando a la derivada de s(x) en los extremos de cada subintervalo, para la cual es necesario definir las derivadas por la izquierda y derecha respectivamente s′+ (xi ) = ∆i − hi (σi+1 + 2σi ) s′− (xi+1 ) = ∆i + hi (2σi+1 + σi ), en donde ∆i = (yi+1 − yi)/hi . Entonces dicha condición queda establecida como sigue: s′− (xi ) = s′+ (xi ), i = 2, . . . , n − 1. Esto equivale al siguiente sistema de n − 2 ecuaciones lineales con n incógnitas (las componentes del vector σ) hi−1 σi−1 + 2(hi−1 + hi )σi + hi σi+1 = ∆i − ∆i−1 , i = 2, . . . , n − 1. Por lo tanto, es necesario agregar dos condiciones para obtener un sistema cuadrado. Precisamente esta caracterı́stica hace que un spline sea tan versátil. En nuestro caso, definiremos 2 la tercera derivada de s(x) en los extremos x1 , xn , en función de las diferencias divididas de (3) tercer orden ∆i yi+1 − yi , xi+1 − xi ∆i+1 − ∆i = , xi+2 − xi ∆i = (2) ∆i (2) (3) ∆i = (2) ∆i+1 − ∆i . xi+3 − xi Esto se debe a que las diferencias divididas aproximan a la derivada correspondiente de s(x), en particular (3) (3) 6∆1 ≈ s′′′ (x1 ), 6∆n−3 ≈ s′′′ (xn ). Lo cual proporciona dos condiciones para completar el sistema de ecuaciones lineales σ2 − σ1 (3) = ∆1 h1 σn − σn−1 (3) = ∆n−3 . hn−1 Haciendo algunas simplificaciones, el sistema final se puede plantear de la siguiente manera: (3) −h1 h1 0 ··· 0 0 σ1 h21 ∆1 h1 2(h1 + h2 ) h2 · · · σ2 ∆2 − ∆1 0 0 .. .. . . . . . . . . . = . . . . . . 0 ··· 0 hn−2 2(hn−2 + hn−1 ) hn−1 σn−1 ∆n−1 − ∆n−2 (3) 0 ··· 0 hn−1 −hn−1 σn −h2n−1 ∆n−3 En lo que resta de la discusión, esencialmente por motivos de espacio, nos referiremos al sistema anterior utilizando la notación Hσ = ∆. Es inmediato observar que H tiene las siguientes caracterı́sticas: • simétrica, tridiagonal • diagonalmente dominante, • no singular, por lo tanto el vector solución σ existe y es único. Desde el punto de vista computacional σ se puede obtener utilizando diferentes técnicas. Sin embargo eliminación gaussiana (EG) sin pivoteo resulta ser extremadamente eficiente en estos casos. Observa con cuidado que EG preserva la estructura cero de H en el siguiente sentido: H y su factorización LU tienen ceros en las mismas posiciones. Por lo tanto, EG no requiere de espacio extra para almacenar L y U. En la Tabla siguiente mostramos los requerimientos computacionales (memoria y número de operaciones) para factorizar H y obtener el vector solución σ. 3 H, σ, ∆ eliminación sust h adelante sust h atrás memoria 4×n−1 0 0 0 multiplicaciones 2×n−4 n−1 2×n−1 Finalmente, los coeficientes de los polinomios de interpolación se pueden obtener a partir de los valores de las constantes σi . Definiendo a s(x) como: s(x) = yi + bi (x − xi ) + ci (x − xi )2 + di(x − xi )3 , las expresiones para los coeficientes bi , ci , di en términos de las componentes de σ son las siguientes: (yi+1 − yi ) − hi (σi+1 + 2σi ), hi = 3σi , σi+1 − σi . = hi bi = ci di Estos coeficientes se pueden manipular para obtener, por ejemplo, expresiones explı́citas que aproximen a la derivada o a la integral definida de la función desconocida f en el intervalo [x1 , xn ]. Es importante recordar que las terceras derivadas del spline se calcularon utilizando diferencias divididas de tercer orden. Si el espaciamiento en los extremos cumple con las restricciones vistas en clase, esta aproximación es correcta. Otra manera, frecuente en aplicaciones en donde no existe información de la función en los extremos del intervalo [x1 , xn ], es considerar que las derivadas segundas del spline se anulan en x1 y en xn y por lo tanto σ1 = σn = 0. Este caso es conocido como spline natural. 2 Integración numérica Uno de los problemas básicos en análisis numérico es calcular aproximaciones para la integral Z b I(f ) = f (x) dx (6) a de una función continua f : [a, b] → R. Existen diversas situaciones en las cuales el teorema fundamental del cálculo no es de utilidad para obtener (1) en forma cerrada. Por ejemplo, cuando f no está disponible en forma analı́tica, es decir que solamente podemos obtener valores de f para un número finito de valores de x. Los algoritmos de integración numérica se basan, prácticamente en su mayorı́a, en hacer particiones finitas del intervalo [a, b]. Entonces la integral (6) se estima como la suma de las aproximaciones en cada subintervalo [xi , xi+1 ] definidas como (xi+1 − xi )fi = hi fi , 4 en donde fi se obtiene mediante fórmulas o reglas llamadas cuadraturas. Las cuadraturas más elementales son la regla del trapecio y la regla del rectángulo, en donde fi se calcula como sigue (xi+1 + xi ) , 2 f (xi+1 ) + f (xi ) . = 2 fiT = f (yi), fiR yi = Las reglas compuestas asociadas consisten en sumar las aproximaciones en cada subintervalo, por lo tanto R(f ) = T (f ) = n X i=1 n X i=1 f (yi)hi , f (xi+1 ) + f (xi ) hi 2 son las reglas compuestas del rectángulo y del trapecio respectivamente. En esta sección vamos a estudiar el error de aproximación de las reglas anteriores. Es decir trataremos de obtener cotas para las cantidades |I(f ) − R(f )|, |I(f ) − T (f )|. Para tales fines, la notación introducida en la sección anterior cambiará ligeramente. Ahora consideraremos n + 1 nodos en el intervalo [a, b], en donde x1 = a y xn+1 = b. Denotaremos por paneles a los subintervalos de la forma [xi , xi+1 ]. La herramienta de análisis es la serie de Taylor de f con centro en yi, el punto medio del panel [xi , xi+1 ]. 1 1 f (x) = f (yi) + (x − yi )f ′ (yi ) + (x − yi)2 f ′′ (yi) + · · · + (x − yi )4 f (4) (yi ) + O(h5i ), 2 4! (7) para lo cual requeriremos que f sea 5 veces continuamente diferenciable en el intervalo [a, b]. De la expresión anterior es fácil observar que la integral de f en el i-ésimo panel está dada por Z xi+1 1 1 5 (4) f (x) dx = hi f (yi) + h3i f ′′ (yi) + hi f (yi ) + · · · + O(h6 ), (8) 24 1920 xi y que por lo tanto que el término dominante de error en la regla rectangular es de orden cúbico. El error total en la regla rectangular es la suma de los errores en cada panel n 1 X 3 ′′ h f (yi ), E= 24 i=1 i (9) de donde se puede concluir inmediatamente que |E| = O(h2), h = max{hi , i = 1, 2, . . . , n}. 5 Consideremos el análisis de la regla trapezoidal, ahora necesitamos los valores de f en xi y xi+1 respectivamente 1 1 1 1 4 (4) f (xi ) = f (yi) − hi f ′ (yi ) + h2i f ′′ (yi ) − h3i (yi)f ′′′ (yi) + h f (yi ) + · · · 2 8 48 384 i 1 1 1 1 4 (4) f (xi+1 ) = f (yi) + hi f ′ (yi ) + h2i f ′′ (yi ) + h3i (yi )f ′′′ (yi ) + h f (yi ) + · · · 2 8 48 384 i de estas expresiones se obtiene f (xi+1 ) + f (xi ) 1 1 4 iv = f (yi ) + h2i f ′′ (yi ) + h f (yi) + · · · 2 8 384 i Combinando (10) con el desarrollo de la integral (8) tenemos Z xi+1 1 1 5 (4) f (xi+1 ) + f (xi ) hi − h3i f ′′ (yi ) − h f (yi ) + · · · f (x) dx = 2 12 480 i xi (10) (11) Por lo tanto el error en la regla trapezoidal, en cada panel, es de orden cúbico. El error total es −2E, es decir dos veces el error obtenido en la regla rectangular. Si definimos la cantidad n 1 X 5 (4) F = h f (yi) 1920 i=1 i entonces obtenemos el resultado siguiente I(f ) = R(f ) + E + F + · · · = T (f ) − 2E − 4F + · · · Observa con cuidado que una combinación lineal de la regla trapezoidal y de la regla rectangular permite cancelar el término E. La regla resultante es conocida como la regla de Simpson. Desde un punto de vista geométrico, la regla compuesta de Simpson se puede definir como sigue: 1. construir la parábola pi que pasa por los puntos (xi , yi), 2. obtener (yi , f (yi)), Z (xi+1 , yi+1 ), xi+1 pi (x) dx, xi 3. obtener la suma n Z X i=1 xi+1 pi (x) dx. xi 6 Ejercicios 1. Verifica que en cualquier spline cúbico: • Los n nodos aportan 2(n − 1) condiciones. • La continuidad de las derivadas aporta n − 2 condiciones. • La continuidad de las segundas derivadas contribuye con n − 2 condiciones. • El número de coeficientes a determinar es 4(n − 1). Por lo tanto quedan dos grados de libertad. 2. Prueba que el conjunto (2) es una base. Sugerencia: consultar el libro de Carl D. Meyer. 3. Obtener las expresiones (3)-(5). 4. Utiliza σ para obtener las expresiones para los coeficientes de los polinomios de interpolación pi (x) = yi + bi (x − xi ) + ci (x − xi )2 + di (x − xi )3 , 5. Modifica las ecuaciones del spline descrito en estas notas para obtener un spline natural; es decir un spline en el cual σ1 = σn = 0. 6. ¿Cuáles son las propiedades matemáticas de la matriz de coeficientes en un spline natural. 7. Obtener la expresión (11) a partir de (8) y de (10). 8. Derivar la regla de Simpson y probar que la fórmula resultante es igual a la combinación 2 1 S(f ) = R(f ) + T (f ), 3 3 en donde R(f ) y T (f ) son las aproximaciones obtenidas por la regla del rectángulo y la regla del trapecio respectivamente. 9. Probar que Z a b s(x) dx = n X hi i fi + fi+1 ci + ci+1 − h3i . 2 12 10. Escribe un programa en Matlab que obtenga aproximaciones a π mediante la integral Z 1 4 dx. π= 2 0 1+x 11. Utiliza: a) la regla del rectángulo; b) la regla del trapecio; c) la regla de Simpson. Compara los resultados obtenidos por las tres reglas cuando el espaciamiento es uniforme h = 1/n. Usa los siguientes valores n = 8, 32, 128. 7 12. Utiliza procedimientos de Matlab para interpolar la función de Runge f (x) = 1 , 1 + 25x2 x ∈ [−1, 1] en 21 puntos igualmente espaciados del intervalo de definición. Compara los resultados con los obtenidos con un polinomio de grado 20 que interpola a los mismos datos. 8