Capítulo 4 Derivación e integración numéricas 4.1 Introducción A veces es necesario calcular el valor, L (f), que el funcional L asigna a la función f perteneciente a un conjunto F. Algunos ejemplos son los siguientes: • L (f ) = f (a), siendo F el conjunto de las funciones derivables en a. • L (f ) = f (a), siendo ahora F el espacio de las funciones que admiten derivada tercera en a. b • L (f ) = a f, donde F puede ser el conjunto de las funciones integrablesRiemann en el intervalo [a, b]. En todos los casos, L será un funcional lineal, es decir, L (f + g) = L (f) + L (g) para cualesquiera elementos f y g del conjunto F, y, L (αf ) = αL (f), siendo α un escalar real arbitrario y f perteneciente a F. En muchas situaciones prácticas no será posible obtener explícitamente el valor de L (f). Por ejemplo, si la variación de la concentración de un reactivo es proporcional a la concentración existente en cada instante, resolviendo la ecuación diferencial conocemos que la curva solución es de tipo exponencial. Pero, ?‘cuánto vale la pendiente en t = 1 de la curva que representa a la concentración si lo único que podemos medir es la concentración en cada instante?, es decir, ?‘cómo podemos calcular L (f) = f (1)? No conocemos una expresión explícita de la función f. Aunque el problema más frecuente es que 2 Capítulo 4. Derivación e integración numéricas se necesite conocer el valor de una derivada primera o, a lo sumo, la segunda, en un punto a, también puede que se necesite calcular una derivada de orden superior, f (k) (a), es decir que L (f) = f (k) (a), y no se conoce una expresión explícita de f (o, caso de conocerla, es excesivamente compleja). Posiblemente sólo se conozca el valor de f en puntos próximos al a, incluso en el propio a. Ello servirá para aproximar el valor de f (k) (a). Es un problema de derivación numérica. Otro ejemplo. Sabemos que la función f(x) = x1 ex es continua en el inter3 3 valo [1, 3]. Pero, ?‘cómo podemos calcular 1 x1 ex dx? ?‘Y L (f) = 1 f (x)dx? No existe una primitiva de f que se exprese en términos elementales. En genb eral, en muchas ocasiones hay que calcular el valor a f (x) dx para una función f integrable en [a, b], de la que no se conoce una primitiva y, por tanto, no podemos aplicar la regla de Barrow. Posiblemente se conozca el valor que f toma en varios puntos del intervalo [a, b], a veces en todos los puntos del intervalo, incluso puede que el valor de derivadas de b f en puntos del mismo. Esos datos nos servirán para aproximar el valor de a f(x)dx. Es un problema de integración numérica. Podríamos dar más ejemplos, correspondientes a otros funcionales L, pero son los dos anteriores, derivación e integración, los más interesantes. En cualquier caso, desde el punto de vista de la aproximación de L (f) mediante fórmulas de tipo interpolatorio, el tratamiento sería idéntico en todos los casos: aproximar f por un interpolante, p, y tomar como aproximación de L (f ) el valor L (p) . Ni que decir tiene que el espacio interpolador al que pertenece p debe estar constituido por funciones sencillas de forma que sea posible calcular L (p). 4.2 Fórmulas de tipo interpolatorio Los polinomios son funciones muy sencillas de derivar y de integrar, por lo que son muy utilizados como interpolantes para obtener fórmulas de derivación e integración numéricas. Por ejemplo, si se dispone de datos lagrangianos, podemos aproximar L (f) mediante el que L asigna al polinomio de interpolación de f. Más concretamente, conocidos los valores que f toma en los nodos (distintos) x0 , x1 , . . ., xn , sea p ∈ Pn el único polinomio tal que p (xi ) = f (xi ), 0 ≤ i ≤ n; entonces L (f) L (p) (4.1) es una fórmula de tipo interpolatorio para L en Pn cuyos nodos son x0 , x1 , . . ., xn . §4.2 Fórmulas de tipo interpolatorio 3 Supongamos, por ejemplo, que p es el polinomio de grado menor o igual que uno que interpola a la función f en los puntos x0 = 4 y x1 = 6. Entonces p (x) = f (4) + y, si L (f ) = b a f (6) − f (4) (x − 4) 6−4 f , podemos hacer b f = L (f) L (p) = a b p a = b f (6) − f (4) f (4) + (x − 4) dx 2 a = f (4) (b − a) + f (6) − f (4) (b − a)2 4 Tendríamos así una primera fórmula de integración numérica, de tipo interpolatorio en P1 , cuyos nodos son 4 y 6 (normalmente los nodos pertenecen al intervalo [a, b]). Sin embargo, si L (f) = f (5), se tiene f (5) = L (f ) L (p) = p (5) = f (6) − f (4) 2 Es una fórmula de derivación numérica, con dos nodos, que permite aproximar f (5) a partir del valor de f en los puntos 4 y 6. Tanto para las fórmulas de integración como las de derivación numérica, los datos más habituales son los valores de la función en puntos distintos, llamados nodos de la fórmula. El espacio interpolador suele ser el de los polinomios de grado menor o igual que n si hay n + 1 datos. No obstante, podría utilizarse otro espacio interpolador y los datos podrían ser distintos. Por ejemplo, para aproximar la integral podrían usarse algunos datos derivada. En lo que sigue, salvo que se especifique otra cosa, el espacio interpolador será Pn y los datos serán lagrangianos, correspondientes a n + 1 nodos. El error de truncamiento, R (f), cometido al aproximar L (f) mediante la fórmula de tipo interpolatorio (4.1) es R (f) = L (f) − L (p) = L (f − p) . Como es conocido, f − p es el error de interpolación. 4 Capítulo 4. Derivación e integración numéricas 4.3 Fórmulas de derivación numérica En primer lugar, suponemos que es necesario aproximar la derivada primera de f en un punto a, es decir L (f) = f (a). Vamos a obtener fórmulas con dos y tres nodos (con un solo nodo x0 se tiene p (x) = f (x0 ) y, por tanto sería f (a) 0, fórmula que carece de interés por dar la misma aproximación para todas las funciones y para todo punto a). (x0 ) Con dos nodos, x0 y x1 , se tiene que p (x) = f (x0 ) + f (xx11)−f (x − x0 ) −x0 y, por tanto, la fórmula de derivación numérica es f (a) f (x1 ) − f (x0 ) . x1 − x0 Es razonable que los nodos sean próximos a a.. Si x0 = a y x1 = a + h (con h = 0), la fórmula es f (a) f (a + h) − f (a) . h (4.2) Si h tiende a cero, la aproximación tiende al valor exacto cuando f es derivable en a; por tanto, para h muy pequeño, la aproximación será buena cuando no se produzcan errores al evaluar f ni en las operaciones. Si x0 = a − h y x1 = a + h, la fórmula resultante es f (a) f (a + h) − f (a − h) . 2h (4.3) Con tres nodos, x0 , x1 y x2 , las siguientes son las tres elecciones más importantes: • x0 = a − h , x1 = a , x2 = a + h. También da lugar a la fórmula (4.3). • x0 = a, x1 = a + h , x2 = a + 2h. En este caso el polinomio de interpolación es p (x) = f (a)+ f (a + h) − f (a) (x − a)+f [a, a + h, a + 2h] (x − a) (x − a − h) . h Es inmediato comprobar que la fórmula de derivación numérica f (a) p (a) se traduce en f (a) −3f (a) + 4f (a + h) − f (a + 2h) . 2h §4.3 Fórmulas de derivación numérica 5 • x0 = a − 2h, x1 = a − h , x2 = a. Un proceso análogo da lugar a la fórmula f (a) f (a − 2h) − 4f (a − h) + 3f (a) . 2h Del mismo modo podrían calcularse fórmulas con cuatro, cinco o más nodos. A continuación vamos a ver fórmulas de tipo interpolatorio para la derivada de orden 2, es decir, L (f) = f (a). Debe haber tres o más nodos pues con dos el polinomio es de grado uno y su derivada segunda es nula para toda función f y para todo punto a. Con tres nodos, x0 , x1 y x2 , el polinomio de interpolación p es p (x) = f (x0 ) + f [x0 , x1 ] (x − x0 ) + f [x0 , x1 , x2 ] (x − x0 ) (x − x1 ) , con lo cual f (a) p (a) = 2f [x0 , x1 , x2 ]. Indicamos a continuación las tres elecciones más frecuentes. • x0 = a − h , x1 = a , x2 = a + h. Da lugar a la fórmula f (a) f (a − h) − 2f (a) + f (a + h) . h2 • x0 = a, x1 = a + h , x2 = a + 2h. Produce la fórmula f (a) f (a) − 2f (a + h) + f (a + 2h) . h2 • x0 = a − 2h, x1 = a − h , x2 = a. En este caso, f (a) f (a − 2h) − 2f (a − h) + f (a) . h2 El proceso para las demás fórmulas de derivación numérica, tanto si es de orden superior a dos (digamos k) como si los nodos son diferentes de los considerados anteriormente, es totalmente análogo: se calcula el polinomio de interpolación y se halla su derivada de orden k en el punto a. Posteriormente daremos otras fórmulas. 6 Capítulo 4. Derivación e integración numéricas 4.4 Fórmulas de Integración numérica: Fórmulas simples b Supongamos ahora que el funcional lineal es L (f) = a f(x)dx. La fórmula de integración numérica basada en un nodo, x0 , se obtiene integrando el polinomio de interpolación p (x) = f (x0 ) en el intervalo [a, b]: a b f (x) dx b f (x0 ) dx = (b − a) f (x0 ) . a Gráficamente, si f es no negativa, lo que se hace es aproximar el área debajo de la curva y = f (x), comprendida entre x = a y x = b, por el área del rectángulo de base b − a y altura f (x0 ) . Si x0 = a, se denomina fórmula del rectángulo izquierda; si x0 = b, fórmula del rectángulo derecha y fórmula del punto medio si x0 = a+b 2 . Son las siguientes, respectivamente: b f(x)dx (b − a) f (a) a b f(x)dx (b − a) f (b) a b a+b f(x)dx (b − a) f 2 a Con dos nodos, x0 y x1 , el polinomio de interpolación es p (x) = f (x0 ) + (x − x0 ). La correspondiente fórmula de integración numérica es f (x1 )−f (x0 ) x1 −x0 a b b f (x1 ) − f (x0 ) f(x)dx f (x0 ) + (x − x0 ) dx x1 − x0 a f (x1 ) − f (x0 ) (b − x0 )2 (a − x0 )2 = (b − a) f (x0 ) + − x1 − x0 2 2 Si x0 = a y x1 = b, es la fórmula del trapecio: b f (a) + f (b) . f(x)dx (b − a) 2 a Con tres nodos se tiene una de las fórmulas más importantes en la integración numérica: la de Simpson. Corresponde a x0 = a, x1 = a+b 2 y x2 = b §4.5 Fórmulas de Newton-Cotes 7 (interpolación en P2 ). La fórmula de Lagrange para el polinomio de interpolación es (x − x1 ) (x − x2 ) (x − x0 ) (x − x2 ) + f (x1 ) + p (x) = f (x0 ) (x0 − x1 ) (x0 − x2 ) (x1 − x0 ) (x1 − x2 ) (x − x0 ) (x − x1 ) . f (x2 ) (x2 − x0 ) (x2 − x1 ) Sustituyendo los valores concretos de los nodos e integrado entre a y b, se obtiene b b−a a+b f (x) dx f (a) + 4f + f (b) . 6 2 a Obsérvese que el peso en el nodo central es cuatro veces el peso en los extremos. Para una fórmula de tipo interpolatorio el número de nodos de interpolación puede ser mucho mayor que el usado antes. Además, los nodos pueden ser diferentes; por ejemplo, nada nos impide para aproximar la integral entre [1, 3] usar los nodos x0 = 1.35 y x1 = 2.9 en lugar de los correspondientes a la fórmula del trapecio. Incluso, en lugar de interpolar en Pn , podemos utilizar otro espacio de funciones (polinomios trigonométricos, funciones spline, etc.). En definitiva, una infinidad de posibilidades diferentes. 4.5 Fórmulas de Newton-Cotes El intervalo de integración [a, b] se puede dividir en n subintervalos de igual longitud, h = b−a n . Entonces, si elegimos como nodos los puntos xi = a + ih, i = 1, . . . , n−1, la fórmula obtenida se denomina de Newton-Cotes abierta con n − 1 nodos. Por ejemplo, con n = 2 se obtiene la fórmula de Newton-Cotes con un solo nodo, que es la fórmula del punto medio. Si elegimos como nodos los puntos xi = a + ih, i = 0, . . . , n, la fórmula obtenida se denomina de Newton-Cotes cerrada con n + 1 nodos. Por ejemplo, con n = 1 se obtiene la fórmula de Newton-Cotes con dos nodos, que es la fórmula del trapecio. Con n = 2 se obtiene la de Simpson. Otras fórmulas de Newton-Cotes, y sus errores de truncatura, son las siguientes: • fórmula 3/8 de Simpson Con h = b−a 3 , b 3h 3h5 (iv) (f (a) + 3f (a + h) + 3f (a + 2h) + f (b))− f (ξ) f (x) dx = 8 80 a 8 Capítulo 4. Derivación e integración numéricas • fórmula de Boole Con h = b−a 4 , b f (x) dx = a 2h (7f (a) + 32f (a + h) + 12f (a + 2h) + 32f (b − h) + 7f (b)) − 45 8h7 (vi) f (ξ) 945 • fórmula de Newton-Cotes abierta con dos nodos Con h = b−a 3 , b f (x) dx = a 3h h3 (f (a + h) + f (b − h)) + f (ξ) 2 4 Podríamos dar muchas más fórmulas de Newton-Cotes, pero es conocido que la interpolación lagrangiana sobre puntos igualmente espaciados no es convergente (ejemplo de Runge). Luego no es recomendable usar una fórmula de Newton-Cotes con muchos nodos para obtener gran precisión. Sin embargo, como la integral es aditiva, podemos descomponer el intervalo de integración en n subintervalos mediante una partición uniforme del mismo con nodos xi = a + ih, i = 0, . . . , n, y expresar la integral en [a, b] como suma de integrales en los intervalos inducidos por la partición: a b f (x) dx = n−1 xi+1 i=0 f (x) dx. (4.4) xi Si n es grande los intervalos de integración son pequeños con lo cual el error al aplicar una fórmula de integración en cada uno puede que sea pequeño. El error total de truncatura es la suma de los errores en cada subintervalo. Veremos posteriormente que su valor tiende a cero cuando n → ∞. 4.6 Fórmulas compuestas Las fórmulas compuestas son las obtenidas al aplicar una misma fórmula simple de integración numérica a cada uno de los sumandos de (4.4). Damos algu xi +xi+1 nas a continuación (para simplificar, notamos fi = f (xi ), fi+ 1 = f ). 2 2 §4.7 Orden de precisión de las fórmulas de tipo interpolatorio 9 • Fórmula del rectángulo a la izquierda compuesta b f (x) dx h a n−1 fi . i=0 • Fórmula del rectángulo derecho compuesta b f (x) dx h a n−1 fi+1 . n−1 fi+ 1 . i=0 • Fórmula del punto medio compuesta b f (x) dx h a 2 i=0 • Fórmula del trapecio compuesta a b f (x) dx h n−1 f0 + fn + fi . 2 i=1 • Fórmula de Simpson compuesta b n−1 n−1 h f (x) dx f0 + fn + 2 fi + 4 fi+ 1 . 2 6 a i=1 i=0 4.7 Orden de precisión de las fórmulas de tipo interpolatorio Si f es un polinomo de grado menor o igual que n al ser interpolada por un polinomio p de Pn se obtiene la misma función, p = f, con lo cual el error de la fórmula para dicha función es R (f) = L (f − p) = L (0) = 0. Es decir, las fórmulas de tipo interpolatorio son exactas para toda función de Pn . Luego su orden de precisión es mayor o igual que n. Para saber el orden exacto sólo tendremos que calcular el error que se comete con las funciones xn+k (o bien con las funciones (x − c)n+k ), para k = 1, 2, .. hasta que dicho error sea distinto de cero. Por ejemplo, la fórmula del rectángulo (exacta en P0 ) da error diferente de cero para la función x−a, ya que R (x − a) = 21 (b−a)2 −0·(b−a) = 10 Capítulo 4. Derivación e integración numéricas 1 2 2 (b − a) = 0. Su orden de precisión es cero. Sin embargo, para la fórmula del a+b a+b 2 punto medio se cumple que R x − 2 = 0 y R x − 2 = 0, con la que la fórmula del punto medio tiene orden de precisión 1. Esto ya se sabía sin más que observar la expresión del error. En la del rectángulo aparece la derivada primera de la función mientras que en la del punto medio interviene la derivada segunda. Es inmediato comprobar que la fórmula del trapecio tiene orden de precisión 1 y que la de Simpson tiene orden de precisión 3. Análogamente, la (a) fórmula de derivación numérica f (a) f (a+h)−f tiene orden de precisión h f (a+h)−f (a−h) tiene orden de precisión 2. Es decir, 1, mientras que f (a) 2h algunas elecciones de nodos son mejores que otras, puesto que con un solo nodo tenemos unas fórmulas de integración numérica que tienen orden de precisión cero y otra con precisión 1; en derivación numérica, con dos nodos hay fórmulas con precisión 1 y otra con precisión2, etc. El orden de precisión es en todas ellas al menos n, pero ?‘cuánto más puede aumentar con una elección adecuada de los nodos? Suponiendo que los datos de interpolación son todos lagrangianos, en las fórmulas para la derivada primera no se puede aumentar el orden más allá del valor n + 1. Además, si Π (x) = (x − x0 ) · · · (x − xn ), de (??) y (??) se deduce que R (f ) = (f − p) (a) = f [x0 , ..., xn , a, a] Π (a) + f [x0 , ..., xn , a] Π (a) = f (n+2) (ξ) f (n+1) (ξ) Π(a) + Π (a) (n + 2)! (n + 1)! Se necesita que Π (a) = 0 para conseguir el orden n + 1. Para aumentar más se necesitaría que Π (a) = 0 por lo que a sería un cero doble de Π (x) = 0 y, por tanto, tendríamos como dato el propio valor de f (a). Resumiendo, en esta práctica se obtienen fórmulas de tipo interpolatorio, y se opera de dos formas: • Se obtiene el polinomio de interpolación, p, de la función f a partir de las fórmulas de Lagrange o Newton y se aproxima L (f) mediante L (p). • Como la interpolación es exacta cuando f es un polinomio de Pn , la aproximación L (f ) L (p) para p ∈ Pn se convierte en L (f) = L (p), resultado que nos permite abordar la determinación de la fórmula para L (f) imponiendo que sea exacta en Pn . Por ejemplo, la fórmula de §4.7 Orden de precisión de las fórmulas de tipo interpolatorio 11 integración numérica del tipo b L (f) = f c1 f (a) + c2 f (b) a se calcula obligando a que sea exacta en P1 , es decir, si e0 (x) = 1 y e1 (x) = x, se impone que se cumplan las condiciones L (ei ) = c1 ei (a) + c2 ei (b) , i = 0, 1. Si la fórmula de integración numérica es gaussiana, entonces debemos hallar el polinomio ortogonal adecuado, calcular sus raíces y utilizar éstas como nodos de interpolación. Por último, debemos indicar que Mathematica dispone de órdenes específicas para manejar los polinomios ortogonales clásicos y de una orden especialmente diseñada para proporcionar una aproximación de la integral de una función con una alta exactitud, NIntegrate.