Capı́tulo IV Integración Numérica IV.1. Cuadraturas: Reglas Simples La fórmulas de cuadratura o reglas simples se obtienen por medio de interpolación polinomial: la función a integrar se “muestrea”, es decir, se toman puntos de la función (x0 , y0 ), (x1 , y1 ), . . . , (xn , yn ) donde yk = f (xk ) para k = 0, . . . , n, se determina el polinomio interpolante pn (x) de grado a lo más n para esos puntos, y finalmente se integra. Intuitivamente, si Rb pn (x) es una buena aproximación de f (x), entonces su integral a pn (x)dx debe Rb ser una buena aproximación de a f (x)dx. Regla del Trapecio Para comenzar, sólo dos puntos (a, f (a)) y (b, f (b)) e interpolación lineal resulta en Z b b−a · (f (a) + f (b)) f (x)dx ≈ 2 a Esta es la regla del trapecio: aproxima la integral por medio del área bajo el trapecio determinado por la interpolación lineal. Caso General Para el caso general, es conveniente usar el método de interpolación de Lagrange. Para los puntos (x0 , y0 ), . . . , (xn , yn ), con yk = f (xk ) el polinomio de interpolación está dado por pn (x) = n X yk · Ln,k (x) k=0 donde Q j6=k (x − xj ) Ln,k (x) = Q j6=k (xk − xj ) IV.1 IV.2 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA De esta representación, integrando, obtenemos Z b Z b f (x)dx ≈ pn (x)dx a a n X b Z = ! yk · Ln,k (x) dx a = = k=1 Z n b X k=0 n X Ln,k (x)dx yk a wk yk k=0 donde b Z Ln,k (x)dx. wk = a Note que estos pesos wk dependen sólo de los nodos, no de la función. La suma Q[f ] = n X w k fk k=0 se llama una fórmula de cuadratura. Regla de Simpson Consideremos el caso de interpolación cuadrática. Se tienen tres nodos x0 = a, x1 = (a + b)/2 y x2 = b. Por conveniencia, sea h = (b − a)/2, de tal forma que xk = a + kh, k = 0, 1, 2. Entonces los tres pesos w0 , w1 , w2 están dados por Z x2 w0 = x0 Z x2 w1 = x0 Z x2 w2 = x0 (x − x1 )(x − x2 ) dx = (x0 − x1 )(x0 − x2 ) Z (x − x0 )(x − x2 ) dx = (x1 − x0 )(x1 − x2 ) Z (x − x0 )(x − x1 ) dx = (x2 − x0 )(x2 − x1 ) Z 2h 0 2h 0 0 2h (x − h)(x − 2h) dx (−h)(−2h) 2h 1 1 x3 x2 − 3h + 2h2 x = h = 2 2h 3 2 3 0 3 2h 1 x 4 x(x − 2h) dx = − 2 − x2 h = h (h)(−h) h 3 3 0 3 2h 2 x(x − h) 1 x x 1 dx = 2 − h = h (2h)(h) 2h 3 2 0 3 (las segundas integrales se han obtenido por medio de una translación). Una forma alternativa de obtenerlos wk , que resulta más fácil de sistematizar para obtener reglas de más alto orden, es la siguiente. Primero, como la translación de la integral arriba lo demuestra, podemos asumir que el intervalo de interés es [a, b] = [0, 2h] y xk = kh, k = 0, 1, 2. Como estamos usando interpolación IV.1. CUADRATURAS: REGLAS SIMPLES IV.3 cuadrática, la interpolación y por lo tanto la integral obtenida con la fórmula de cuadratura deben ser exactas. Ası́ que para f (x) = xk , k = 0, 1, 2 se debe tener que, para j = 0, 1, 2, 2 X wk xjk 2h Z = 0 k=0 xj+1 x dx = j+1 j 2h = 0 (2h)j+1 j+1 Estas tres ecuaciones explı́citamente son w0 +w1 +w2 = 2h +w1 h +w2 (2h) = 2h2 +w1 h2 +w2 (2h)2 = 83 h3 y cancelando h’s w0 +w1 +w2 = 2h +w1 +2w2 = 2h +w1 +4w2 = 83 h La solución es w0 = h/3, w1 = 4h/3 y w2 = h/3, igual a lo obtenido por medio de las integrales anteriormente. La cuadratura que se obtiene se llama la regla de Simpson: Z x2 h f (x)dx ≈ (f0 + 4f1 + f2 ) 3 x0 Solución General Generalizando, con xk = kh, k = 0, 1, . . . , n, obtenemos, para j = 0, 1, . . . , n, j+1 nh Z nh n X x (nh)j+1 j j x dx = w k xk = = j+1 0 j+1 0 k=0 y de aquı́, n X wk (kh)j = k=0 (nh)j+1 . j+1 j Cancelando h y con wk = wk /h, se obtiene el sitema de ecuaciones n X wk kj = k=0 que en forma expandida es 1 1 1 0 1 2 0 1 4 .. .. .. . . . 0 1 2n nj+1 , j+1 ··· ··· ··· ... 1 n n2 .. . · · · nn para j = 0, 1, . . . , n, w0 w1 w2 .. . wn = n n2 2 n3 3 .. . nn+1 n+1 IV.4 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA Note que la matriz de coeficientes es una matriz de Vandermonde. Podemos usar Matlab para solucionar estos sistemas de ecuaciones. Con la siguiente función function cuadratura(N) for n=1:N nn=(n+1):-1:1; b=((n.^nn)./nn)’; V= (vander(0:1:n))’; c= (V\b)’ end obtenemos >> cuadratura(6) c = 1/2 c = 1/3 c = 3/8 c = 14/45 c = 95/288 c = 41/140 1/2 4/3 1/3 9/8 9/8 3/8 64/45 8/15 64/45 14/45 125/96 125/144 125/144 125/96 54/35 27/140 68/35 27/140 95/288 54/35 Las dos primeras soluciones son las reglas del trapecio y de Simpson. Las dos siguientes se llaman reglas de Simpson de 3/8 y de Boole: Regla de Simpson-3/8 Z x3 f (x)dx = x0 3h (f0 + 3f1 + 3f2 + f3 ) 8 Regla de Boole Z x4 f (x)dx = x0 2h (7f0 + 32f1 + 12f2 + 32f3 + 7f4 ) 45 Ejemplo. R5 . Las En este ejemplo deseamos aproximar ln 5 por medio de la integral 1 dx x gráficas muestran las interpolaciones de grados 1 a 4. Los resultados obtenidos con Matlab muestran para cada valor de n, el valor de h y de la cuadratura, y una tabla con los valores del ı́ndice k y xk , yk wk y wk yk . El valor de la cuadratura es, para cada n, la suma de la última columna (valores wk yk ) multiplicada por h. 41/14 IV.1. CUADRATURAS: REGLAS SIMPLES IV.5 Figura IV.1: Integración con las reglas del trapecio, Simpson, Simpson 3/8 y Boole. >> cuadraturaf(8) n = 1 h = 4 cuad = 12/5 [k x y w w*y] = 0 1 1 5 1 1/5 1/2 1/2 1/2 1/10 n = 2 h = 2 cuad = 76/45 [k x y w w*y] = 0 1 1 3 2 5 1 1/3 1/5 1/3 4/3 1/3 1/3 4/9 1/15 n = 3 h = 4/3 cuad = 636/385 [k x y w w*y] = 0 1 1 7/3 2 11/3 3 5 1 3/7 3/11 1/5 3/8 9/8 9/8 3/8 3/8 27/56 27/88 3/40 n = 4 h = 1 cuad = 364/225 [k x y w w*y] = IV.6 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA 0 1 2 3 4 1 2 3 4 5 1 1/2 1/3 1/4 1/5 14/45 64/45 8/15 64/45 14/45 14/45 32/45 8/45 16/45 14/225 n = 5 h = 4/5 cuad = 2083/1290 [k x y w w*y] = 0 1 1 9/5 2 13/5 3 17/5 4 21/5 5 5 1 5/9 5/13 5/17 5/21 1/5 95/288 125/96 125/144 125/144 125/96 95/288 95/288 625/864 625/1872 625/2448 625/2016 19/288 n = 6 h = 2/3 cuad = 662/411 [k x y w w*y] = 0 1 1 5/3 2 7/3 3 3 4 11/3 5 13/3 6 5 1 3/5 3/7 1/3 3/11 3/13 1/5 41/140 54/35 27/140 68/35 27/140 54/35 41/140 41/140 162/175 81/980 68/105 81/1540 162/455 41/700 n = 7 h = 4/7 cuad = 2752/1709 [k x y w w*y] = 0 1 1 11/7 2 15/7 3 19/7 4 23/7 5 27/7 6 31/7 7 5 1 7/11 7/15 7/19 7/23 7/27 7/31 1/5 1073/3527 810/559 343/640 649/536 649/536 343/640 810/559 1073/3527 1073/3527 509/552 600/2399 1113/2495 646/1753 467/3361 551/1684 193/3172 n = 8 h = 1/2 cuad = 433/269 [k x y w w*y] = 0 1 1 3/2 2 2 3 5/2 4 3 5 7/2 6 4 7 9/2 8 5 1 2/3 1/2 2/5 1/3 2/7 1/4 2/9 1/5 499/1788 1183/712 -353/1348 388/131 -1317/1028 388/131 -353/1348 1183/712 499/1788 499/1788 1183/1068 -353/2696 776/655 -439/1028 765/904 -353/5392 1183/3204 297/5321 Finalmente, la tabla siguiente muestra las cuadraturas y el error resultantes para n = 1, 2, . . . , 12. IV.2. ERROR DE LAS REGLAS SIMPLES n cuadratura error 1 2 3 4 5 6 7 8 9 10 11 12 2.400000000000000 1.688888888888889 1.651948051948052 1.617777777777775 1.614728626493345 1.610704216419929 1.610298283118095 1.609665126452762 1.609598154738391 1.609482778174419 1.609467583016121 1.609424211461854 0.790562087565900 0.079450976454788 0.042510139513952 0.008339865343675 0.005290714059245 0.001266303985829 0.000860370683995 0.000227214018661 0.000160242304291 0.000044865740318 0.000029670582020 0.000013700972246 IV.2. IV.7 Error de las Reglas Simples Dada una cuadratura Q[f ] = M X wk f (xk ), k=0 el error de truncamiento es b Z f (x)dx − Q[f ] E[f ] = a IV.2.1. Grado de Precisión El grado de precisión de una fórmula de cuadratura es el entero positivo n tal que E[p] = 0 para todo polinomio p(x) de grado ≤ n pero E[pn+1 ] 6= 0 para algún polinomio pn+1 (x) de grado n + 1. Veamos el grado de precisión de las reglas simples antes derivadas. En cada caso, obviamente, el grado de precisión es al menos el grado de la interpolación para el cual se derivó la regla. Trapecio Por una parte Z h x2 dx = 0 h3 . 3 Por otra parte QT [x2 ] = h h3 (0 + h2 ) = 2 2 Puesto que estos dos resultados son diferentes, el grado de precisión de la regla del trapecio es 1. IV.8 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA Simpson Tenemos que R 2h 3 x dx = R02h 4 x dx = 0 (2h)4 4 (2h)5 5 QS [x3 ] = h3 (0 + 4h3 + (2h)3 ) = 4h4 QS [x4 ] = h3 (0 + 4h4 + (2h)4 ) = 20 h5 3 = 4h4 = 32 h5 5 Ası́ que el grado de la regla de Simpson es 3. Note que esto es uno más de lo que podı́amos esperar dado que se obtuvo con interpolación cuadrática. Simpson 3/8 Tenemos que R 3h 0 (3h)5 5 x4 dx = = 243 5 h; 5 QS3/8 [x4 ] = 3h (0 8 + 3h4 + 3(2h)4 + (3h)4 ) = 99 5 h 2 Ası́ que el grado de la regla de Simpson 3/8 es 3. Boole Tenemos que R 4h 0 R 4h 0 x5 dx = (4h)6 6 x6 dx = (4h)7 7 2048 6 h; 3 QB [x5 ] = = 16384 7 6 = 7 h ; QB [x ] = = = 2h (7(0) 45 2048 6 h 3 2h (7(0) 45 7040 7 h 3 + 32h5 + 12(2h)5 + 32(3h)5 + 7(4h)5 ) + 32h6 + 12(2h)6 + 32(3h)6 + 7(4h)6 ) Ası́ que el grado de la regla de Boole es 5. De nuevo uno más de lo que se podrı́a esperar dado que el método se deriva de interpolación de grado 4. IV.2.2. Reglas Simples con Error Se puede usar el error de interpolación para estimar el error de las reglas de cuadratura anteriores. Sin embargo, procediendo de esta manera no se obtiene la mejor estimación posible. Por ejemplo, para la regla de Simpson se obtendrı́a que el error es proporcional a f (3) (c)h4 para algún c ∈ [x0 , x2 ]. Pero hemos obtenido que esta regla es exacta para polinomios de grado 3, y consistente con esto se puede derivar (aunque no lo hacemos aquı́) que el error es proporcional a f (4) (c)h5 para algún c ∈ [x0 , x2 ], como se enuncia en esta sección. Regla del Trapecio Z x1 f (x)dx = x0 h h3 (f0 + f1 ) − f (2) (c) para algún c ∈ [x0 , x1 ] 2 12 IV.2. ERROR DE LAS REGLAS SIMPLES IV.9 Prueba: El error de interpolación lineal en x está dado por 1 E1 (x) = f (x) − p1 (x) = f 00 (ĉ(x))(x − x0 )(x − x1 ) 2 para algún ĉ(x) ∈ [x0 , x1 ]. Entonces Z x1 1 00 ET [f ] = f (ĉ(x))(x − x0 )(x − x1 )dx x0 2 Z x1 1 00 (x − x0 )(x − x1 )dx = f (c) 2 x0 Z h 1 00 = x(x − h)dx f (c) 2 0 h 1 00 1 3 1 2 = f (c) x − x h 2 3 2 0 1 00 = − f (c)h3 12 donde en la segunda lı́nea se ha usado el teorema del valor medio para integrales con una función de peso (la función f 00 (ĉ(x)) puede salir de la integral como f 00 (c) donde c = ĉ(ξ) para algún ξ ∈ [x0 , x1 ]). Regla de Simpson Z x2 f (x)dx = x0 h5 h (f0 + 4f1 + f2 ) − f (4) (c) para algún c ∈ [x0 , x2 ] 3 90 Regla de Simpson-3/8 Z x3 f (x)dx = x0 3h 3h5 (4) (f0 + 3f1 + 3f2 + f3 ) − f (c) para algún c ∈ [x0 , x3 ] 8 80 Regla de Boole Z x4 x0 2h 8h7 (6) f (x)dx = (7f0 +32f1 +12f2 +32f3 +7f4 )− f (c) para algún c ∈ [x0 , x4 ] 45 945 Ejemplo. R5 . Consideramos de nuevo la aproximación de ln 5 por medio de la integral 1 dx x Se quiere determinar las cotas de error dadas teóricas de acuerdo a las fórmulas anteriores. Tenemos 1 f (x) = ; f 0 (x) = − x12 ; f 00 (x) = x23 ; f (3) (x) = − x64 x f (4) (x) = x245 ; f (5) (x) = − 120 ; f (6) (x) = 720 x6 x7 IV.10 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA Todas estas son decrecientes en valor absoluto y por lo tanto el máximo ocurre en x = 1, en cada caso. Ası́ que 43 32 h3 máx |f (2) (x)| = ·2= = 10,666666 12 x∈[1,5] 12 3 h5 25 384 |ES (1/x, [1, 5])| ≤ máx |f (4) (x)| = · 24 = = 8,533333 90 x∈[1,5] 90 45 3(4/3)5 512 3h5 (4) máx |f (x)| = · 24 = = 3,792592 |ES3/8 (1/x, [1, 5])| ≤ 80 x∈[1,5] 80 135 8h7 8 128 |EB (1/x, [1, 5])| ≤ máx |f (6) (x)| = · 720 = = 6,095238 945 x∈[1,5] 945 21 |ET (1/x, [1, 5])| ≤ Por otra parte, el valor exacto de la integral es ln 5 = 1,609437912434100 · · · y el resultado de las reglas del trapecio, de Simpson y de Boole son: 2,4, 1,6888888 · · · y 1,61777777 · · ·. Ası́ que se observa que la cota de error está lejos del error real. Esto se debe principalmente a que las derivadas decrecen rápidamente para x > 1 pero tomamos el máximo en x = 1 para la cota. IV.3. Reglas Simples Abiertas Las reglas anteriores son cerradas porque incluyen los extremos del intervalo como nodos. En las reglas abiertas se omiten los extremos. Las siguientes son las primeras tales reglas, para n nodos, con n = 1, 2, 3, 4, donde en cada caso a = x−1 , b = xn , y x−1 , x0 , x1 , . . . , xn dividen [a, b] en intervalos iguales: Z x1 1 f (x)dx = 2hf (x0 ) + f 00 (c)h3 3 x Z −1 x2 3 3h (f (x0 ) + f (x1 )) + f 00 (c)h3 f (x)dx = 2 4 x Z −1 x3 4h 14 f (x)dx = (2f (x0 ) − f (x1 ) + 2f (x2 )) + f (4) (c) 3 45 x Z −1 x4 5h 95 (4) f (x)dx = (11f (x0 ) + f (x1 ) + f (x2 ) + 11f (x0 )) + f (c) 24 144 x−1 IV.4. Reglas Compuestas Como ocurre en interpolación, en general se prefiere dividir el intervalo de integración en un número de subintervalos y aplicar una regla simple de bajo orden en cada uno de ellos. Las fórmulas resultantes se denominan reglas compuestas. Sea [a, b] el intervalo de integración y M el número de subintervalos. Para las reglas del trapecio, de Simpson y de Boole se obtienen las siguientes reglas compuestas. Escribimos fk = f (xk ). IV.4. REGLAS COMPUESTAS IV.11 Trapecio Sea h = (b − a)/M y xk = a + kh, k = 0, 1, . . . , M . Se aplica la regla simple del trapecio en cada subintervalo [xk , xk+1 ] y se obtiene la regla compuesta h (f0 + 2f1 + 2f2 + 2f3 + · · · + 2fM −2 + 2fM −1 + fM ) 2 ! M −1 X h = f0 + fk + fM 2 k=1 T (f, h) = ET (f, h) = − (b − a)f (2) (c) 2 h = O(h2 ) para algún c ∈ [a, b] 12 Simpson (1/3) Sea h = (b − a)/2M y xk = a + kh, k = 0, 1, . . . , 2M . Se aplica la regla simple del trapecio en cada subintervalo [x2k , x2k+2 ] y se obtiene la regla compuesta h ((f0 + 4f1 + f2 ) + (f2 + 4f3 + f4 ) + · · · + (f2M −2 + 4f2M −1 + f2M )) 3 h = (f0 + 4f1 + 2f2 + 4f3 + 2f4 + · · · + 2f2M −2 + 4f2M −1 + f2M ) 3 ! M −1 M −1 X X h f2k+1 + f2M f2k + 4 f (x0 ) + 2 = 3 k=0 k=1 S(f, h) = ES (f, h) = − (b − a)f (4) (c) 4 h = O(h4 ) para algún c ∈ [a, b] 180 Boole Sea h = (b − a)/4M y xk = a + kh, k = 0, 1, . . . , 4M . Se aplica la regla simple del trapecio en cada subintervalo [x4k , x4k+4 ] y se obtiene la regla compuesta M −1 2h X B(f, h) = (7f4k + 32f4k+1 + 12f4k+2 + 32f4k+3 + 7f4k+4 ) 45 k=0 2h = 45 7f0 + 14 M −1 X k=1 f4k + 32 M −1 X M −1 X k=0 k=0 (f4k+1 + f4k+3 ) + 12 ! f4k+2 + 7f4M 6 EB (f, h) = O(h ) Ejemplo. R5 Se quiere aproximar la integral 0 exp(−x2 /2)dx por medio de (i) la regla compuesta del trapecio con M = 10 y de (ii) la regla compuesta de Simpson con IV.12 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA 2M = 10. Para cada caso, (iii) cuál es la cota teórica de error ? (iv) cual debe ser el mı́nimo valor de M para garantizar error no mayor que 5 × 10−9 ? Sea f (x) = exp(−x2 /2). (i) Con M = 10, tenemos xk = k/2, para k = 0, 1, . . . , 10. Tenemos la tabla de valores k 0 1 2 3 4 5 6 7 8 9 10 xk 0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0 fk 1,00000000 0,88249690 0,60653065 0,32465246 0,13533528 0,04393693 0,01110899 0,00218749 0,00033546 0,00004006 0,00000372 Entonces 0,5 (1 + 2 · 0,88249690 + 2 · 0,60653065 + 2 · 0,32465246 2 +2 · 0,13533528 + 2 · 0,04393693 + 2 · 0,01110899 + 2 · 0,00218749 +2 · 0,00033546 + 2 · 0,00004006 + 0,00000372) = 0,25 · 5,01325225 = 1,25331306 T (f, 0,5) = (ii) Usando la misma tabla de valores, tenemos 0,5 (1 + 4 · 0,88249690 + 2 · 0,60653065 + 4 · 0,32465246 3 +2 · 0,13533528 + 4 · 0,04393693 + 2 · 0,01110899 + 4 · 0,00218749 +2 · 0,00033546 + 4 · 0,00004006 + 0,00000372) = 0,16666667 · 7,51987997 = 1,25331333 S(f, 0,5) = (iii) Para usar las cotas teóricas, obtenemos las derivadas de f (x): f (0) (x) f (1) (x) f (2) (x) f (3) (x) f (4) (x) f (5) (x) = = = = = = exp(−x2 /2) (−x) exp(−x2 /2) (−1 + x2 ) exp(−x2 /2) (3x − x3 ) exp(−x2 /2) (3 − 6x2 + x4 ) exp(−x2 /2) (−15x + 10x3 − x5 ) exp(−x2 /2) IV.4. REGLAS COMPUESTAS IV.13 Para la regla del trapecio |ET (f, h)| ≤ (b − a)h2 máx |f (2) (x)| x∈[0,5] 12 Para determinar el max de |f (2) (x)| en [1, 5], encontramos los puntos crı́ticos de f (2) (x) igualando a cero f (3) (x): √ f (3) (x) = (3x − x3 ) exp(−x2 /2) = 0 ⇒ x = 0 ó x = 3. √ Comparando entonces f (0), f ( 3) y f (5), se encuentra que el máximo (en valor absoluto) está en x = 0. Ası́ que máxx∈[0,5] |f (2) (x)| = 1, y por lo tanto |ET (f, 0,5)| ≤ 5 · (0,5)2 · 1 = 0,1042 12 Para la regla de Simpson |ES (f, h)| ≤ (b − a)h4 máx |f (4) (x)| 180 x∈[0,5] Similarmente, determinamos los puntos crı́ticos f (5) (x) = (−15x+10x3 −x5 ) exp(−x2 /2) = 0 ⇒ √ x = 0 ó x2 = 5± 10. En el segundo caso se tiene x ≈ 1,3556, x ≈ 2,8570. Comparando f (4) (0) = 3 f (4) (1,3556) = −1,8549 f (4) (2,8570) = 0,3487 se encuentra que máxx∈[0,5] |f (4) (x)| = 3 y por lo tanto |ES (f, h)| ≤ 5(0,5)4 · 3 = 0,005208 180 (iv) Para la regla del trapecio M debe ser tal que 5(5/M )2 ≤ 5 · 10−9 12 de donde r 5 4 10 = 45643,54 6 Entonces se necesita M = 45644. Para la regla del trapecio 2M debe ser tal que (5/2M )4 ≤ 5 · 10−9 12 de donde 5 100 M ≥ · 1/4 = 159,73 2 6 Entonces se necesita M = 160. M ≥5 IV.14 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA Matlab A continuación las rutinas que implementan las reglas del trapecio y de Simpson compuestas. function s = traprl (f, a, b, M) % Entrada - f es ei integrando introducido como cadena de caracteres % - a y b son los limites superior e inferior de integracion % - M es el numero de subintervalos % Salida - s es la suma de la regla trapezoidal (integral) h = (b - a) / M; s = 0; for k = 1:(M-1) x = a + h * k; s = s + feval(f, x); end s = h *(feval(f, a) + feval(f, b)) / 2 + h * s; function s = simprl (f, a, b, M) % Entrada - f es el integrando introducido como cadena de caracteres % - a y b son los limites superior e inferior de integracion % - M es el numero de subintervalos % Salida - s es la suma de la regla de simpson h = (b - a) / (2 * M); s1 = 0; s2 = 0; for k = 1:M x = a + h * (2 * k - 1); s1 = s1 + feval(f, x); end for k = 1:(M-1) x = a + h * 2 * k; s2 = s2 + feval(f, x); end s = h * (feval(f, a) + feval(f, b) + 4 * s1 + 2 * s2) / 3; ’f’ ’f’ IV.5. Reglas Recursivas y Método de Romberg IV.5.1. Reglas Recursivas Trapecio. Para k = 0, 1, 2, . . ., el intervalo [a, b] se subdivide en Mk = 2k subintervalos de longitud hk = (b − a)/2k , y T (k) es el valor de la regla del trapecio compuesta para estos 2k subintervalos. Las abscisas para T (k) son xk,j = a + jhk para j = 0, 1, . . . , 2k , y los valores de la función son fk,j = f (xk,j ). Los valores de las reglas del trapecio T (k) se pueden evaluar iterativamente de la siguiente manera: h T0 = (f (a) + f (b)) 2 IV.5. REGLAS RECURSIVAS Y MÉTODO DE ROMBERG IV.15 y para k ≥ 1 Mk−1 X T (k − 1) + hk fk,2j−1 . Tk = 2 j=1 Prueba. Se verifica teniendo en cuenta que Mk = 2Mk−1 y que los nodos de Tk−1 son los nodos pares de Tk : es decir xk−1,j = xk,2j , y por lo tanto fk−1,j = fk,2j . Con esto, podemos escribir Tk = hk 2 fk,0 + 2 ! fk,j + fk,Mk j=1 = M k −1 X hk fk,0 + 2 2 1 hk−1 = 2 2 Mk 2 −1 X fk,2j + fk,Mk + hk j=1 Mk 2 X fk,2j−1 j=1 Mk−1 −1 fk−1,0 + 2 X Mk−1 ! fk−1,j + fk−1,Mk−1 + hk j=1 X fk,2j−1 j=1 Mk−1 X Tk−1 = + hk fk,2j−1 . 2 j=1 Simpson. [a, b] se subdivide en 2k = 2M , k ≥ 1, subintervalos. Sk es el valor de la regla de Simpson compuesta con 2k subintervalos y hk = (b − a)/2k . Con un cálculo como el anterior, se obtiene la relación Sk = 4Tk − Tk−1 para k = 1, 2, 3, . . . 3 Es decir, por medio de está fórmula se obtiene la cuadratura de Simpson con error O(h4 ) a partir de la del trapecio con error O(h2 ). Boole. [a, b] se subdivide en 2k = 4M , k ≥ 2, subintervalos. Bk es el valor de la regla de Boole compuesta con 2k subintervalos y hk = (b − a)/2k . De nuevo, con un cálculo como el anterior, se obtiene la relación Bk = 16Sk − Sk−1 para k = 2, 3, . . . 15 Ası́, se obtiene la cuadratura de Boole con error O(h6 ) a partir de la de Simpson con error O(h4 ). Lo anterior es un ejemplo del método de Romberg el cual describimos a continuación. IV.16 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA IV.5.2. Método de Romberg El método de Romberg se origina en la siguiente fórmula del error para la rega del trapecio: ET (f, h) = a1 h2 + a2 h4 + a3 h6 + · · · Ya habı́amos visto que este error es O(h2 ); lo crucial aquı́ es que cuando se derivan los términos de más alto orden no aparecen potencias impares, y que los coeficientes ai son independientes de h. Ası́ que b Z f (x)dx = T (f, h) + a1 h2 + a2 h4 + a3 h6 + · · · a Escribiendo la misma relación para 2h se obtiene Z b f (x)dx = T (f, 2h) + 4a1 h2 + 16a2 h4 + 64a3 h6 + · · · a Multiplicando por 4 la primera ecuación y substrayendo la segunda se obtiene Z (4 − 1) b f (x)dx = 4T (f, h) − T (f, 2h) + (4 − 16)a2 h4 + (4 − 64)a3 h6 + · · · a y Z b f (x)dx = a 4T (f, h) − T (f, 2h) + b2 h4 + b3 h6 4−1 con b2 = (4 − 16)/(4 − 1), b3 = (4 − 64)/(4 − 1), etc. De esta forma se ha obtenido una nueva cuadratura con error O(h4 ). De acuerdo con las fórmulas recursivas derivadas antes, esta nueva regla es simplemente la regla de Simpson, la cual sabemos tiene error O(h4 ). Se puede continuar de la misma manera obteniendo reglas de error cada vez menor (la siguiente es la regla de Boole). Generalizando lo anterior, se obtiene el siguiente procedimiento iterativo para calcular una secuencia de cuadraturas Rk,j , j ≥ 1 y k ≥ j: primero Rk,1 = Tk−1 para k ≥ 1 y para j ≥ 2 y k ≥ j se tiene la relación Rk,j = 4j−1 Rk,j−1 − Rk−1,j−1 4j−1 − 1 Esto corresponde a una tabla Rk,j calculada con las dependencias de la siguiente manera: IV.5. REGLAS RECURSIVAS Y MÉTODO DE ROMBERG Trapecio O(h2 ) Simpson Boole O(h4 ) O(h6 ) ← R2,2 ← R3,2 ← R4,2 ← R5,2 ← R6,2 ← R3,3 ← R4,3 ← R5,3 ← R6,3 IV.17 ··· O(h8 ) O(h10 ) O(h12 ) ← R4,4 ← R5,4 ← R6,4 .. . ← R5,5 ← R6,5 ··· R1,1 R2,1 R3,1 R4,1 R5,1 R6,1 ← R6,6 Se tiene que Rk,1 = Tk−1 para k ≥ 1 Rk,2 = Sk−1 para k ≥ 2 Rk,3 = Bk−1 para k ≥ 3 Prueba. Veamos como se deduce la regla recursiva para Rk,j en general. Supon2(j−1) gamos que ya tenemos las reglas Rk,j−1 y Rk−1,j−1 las cuales tienen error O(hk ) 2(j−1) y O(hk−1 ) respectivamente: Z b 2(j−1) f (x)dx = Rk,j−1 + aj−1 hk + aj h2j k + ··· a Z b 2(j−1) f (x)dx = Rk−1,j−1 + aj−1 hk−1 + aj h2j k−1 + · · · a Usado hk−1 = 2hk , podemos reescribir la segunda ecuación como Z b 2(j−1) f (x)dx = Rk−1,j−1 + 22(j−1) aj−1 hk + 22j aj h2j k ··· a donde los puntos denotan términos de más alto orden. Multiplicando la primera igualdad por 22(j−1) = 4j−1 y substrayendo la segunda se tiene que Z b j−1 (4 − 1) f (x)dx = 4j−1 Rk,j−1 − Rk−1,j−1 + bj h2j k + ··· a donde bj = −3 · 4j−1 aj . Ası́ que Z b 4j−1 Rk,j−1 − Rk−1,j−1 + bj h2j f (x)dx = k + ··· j−1 4 −1 a IV.18 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA y por lo tanto podemos definir la cuadratura Rk,j = 4j−1 Rk,j−1 − Rk−1,j−1 4j−1 − 1 la cual tiene error O(h2j k ). Ejemplo. Consideramos de nuevo la función f (x) = exp(−x2 /2) en [0, 5]. >> [R Q err h]=romber(@(x) exp(-x.^2/2),0,5,4,5e-5) R = 2.50000932 0 0 0 1.35984699 0.97979288 0 0 1.25331998 1.21781098 1.23367885 0 1.25331289 1.25331052 1.25567716 1.25602633 1.25331327 1.25331340 1.25331359 1.25327608 Q = 1.25326529 err = 0.00276105 h = 0.31250000 0 0 0 0 1.25326529 Matlab function [R, quad, err, h] = romber (f, a, b, n, tol) % Entrada - f es el integrando introducido como cadena de caracteres % - a y b son los limites superior e inferior de integracion % - n es el numero maximo de filas en la tabla % - tol es la tolerancia % Salida - R es la tabla de Romberg % - quad es el valor de la cuadratura (integral) % - err es el error estimado % - h es el tama~ no de paso mas peque~ no utilizado M = 1; h = b - a; err = 1; J = 0; R = zeros(4, 4); R(1, 1) = h * (feval(f, a) + feval(f, b)) / 2; while ((err > tol) & (J < n)) | (J < 4) J = J + 1; h = h / 2; s = 0; for p = 1:M x = a + h * (2 * p - 1); s = s + feval(f, x); end R(J+1, 1) = R(J, 1) / 2 + h * s; M = 2 * M; for K = 1:J R(J+1, K+1) = R(J+1, K) + (R(J+1, K) - R(J, K)) / (4 ^ K - 1); end err = abs(R(J, J) - R(J+1, K+1)); end quad = R(J+1, J+1); ’f’ IV.6. CUADRATURA DE GAUSS-LEGENDRE IV.6. IV.19 Cuadratura de Gauss-Legendre Las reglas que hemos estudiado hasta ahora tienen x0 = a y xn = b –por lo cual se dice que son cerradas– y los nodos están distribuidos uniformemente. Existen reglas en las cuales esto no es cierto. En la cuadratura de Gauss-Legendre, con n nodos se logra grado de precisión 2n − 1. Los nodos que se usan son las raı́ces del polinomio de Legendre de grado n. Regla de Gauss-Legendre para dos Puntos. La regla de Gauss-Legendre para dos puntos está dada por Z 1 1 −1 +f √ f (x)dx ≈ G2 (f ) = f √ 3 3 −1 con error f (4) (c) 135 4 para algún c ∈ [−1, 1], asumiendo f ∈ C [−1, 1]. EG2 (f ) = Esta fórmula se puede derivar a partir de la forma G2 (f ) = w1 f (α1 ) + w2 f (α2 ) tratando de obtener una cuadratura con el mayor grado de precisión posible. Ası́, procedemos con los cálculos: R1 1dx = 2 G2 (1) = w1 + w2 R−1 1 xdx = 0 G2 (x) = w1 α1 + w2 α2 R−1 1 2 2 x dx = 3 G2 (x2 ) = w1 α12 + w2 α22 R−1 1 x3 dx = 0 G2 (x3 ) = w1 α13 + w2 α23 −1 De donde se obtienen las ecuaciones w1 + w2 = 2 w 1 α1 + w 2 α2 = 0 2 w1 α12 + w2 α22 = 3 3 3 w 1 α1 + w 2 α2 = 0 De la segunda ecuación, se tiene w2 α2 = −w1 α1 . Reemplazando esto en la última resulta en w1 α1 (α12 − α22 ) = 0 No puede ser que w1 x1 = 0, por lo tanto α2 = −α1 . Esto en la segunda ecuación da w1 = w2 , y por lo tanto la primera ecuación implica que w1 = w2 = 1. IV.20 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA Finalmente, la tercera ecuación implica que 1 α1 = −α2 = √ . 3 Los valores determinados corresponden a la expresión de G2 dada antes. El grado de precisión es 3 porque 4 4 R1 4 1 2 4 √ G2 (x ) = − 3 + √13 = 29 x dx = 5 −1 R5 Ejemplo. Usamos la cuadratura G2 para aproximar ln 5 = 1 dx . Primero debex mos trasladar la integral al intervalo [−1, 1] con el cambio de variable x = 2u + 3: Z 1 Z 5 2du dx = . x −1 2u + 3 1 Entonces Z 1 ln 5 = −1 2 2 2·6 36 2du √ √ ≈ + = = = 1,565217 · · · 2u + 3 9 − 4/3 23 2(−1/ 3) + 3 2(1/ 3) + 3 mientras que el valor exacto es 1,609437912 · · · Regla de Gauss-Legendre para tres Puntos. La regla de Gauss-Legendre para tres puntos está dada por r ! r !! Z 1 1 3 3 5f − + 8f (0) + 5f f (x)dx ≈ G3 (f ) = 9 5 5 −1 con error f (6) (c) 15750 6 para algún c ∈ [−1, 1], asumiendo f ∈ C [−1, 1]. EG3 (f ) = Ejemplo. Usamos la cuadratura G3 para aproximar ln 5 = Z 5 Z 1 dx 2du ln 5 = = . x 1 −1 2u + 3 R5 1 dx . x Ya sabemos Entonces 1 ln 5 ≈ 9 2 2 2 5 p +8 +5 p 2·0+3 −2 3/5 + 3 +2 3/5 + 3 ! 2 (5 · 0,68927172 + 8 · 0,33333333 + 5 · 0,21981919) 5 2 = (3,44635859 + 2,66666667 + 1,09909596) 9 = 1,60269360 · · · = IV.6. CUADRATURA DE GAUSS-LEGENDRE IV.6.1. IV.21 Polinomios de Legendre Se puede usar el método anterior (coeficientes indeterminados) para obtener n nodos y coeficientes de tal manera que la cuadratura resultante tiene grado de precisión 2n − 1. Alternativamente, esos mismos nodos resultan ser las raı́ces de los llamados polinomios de Legendre. En el intervalo [−1, 1], el conjunto de polinomios forma un espacio vectorial con producto interior Z +1 hP (x), Q(x)i = P (x)Q(x)dx −1 Se puede aplicar entonces el proceso de ortogonalización de Gram-Schmidt para obtener una sucesión de polinomios ortogonales Pn (x), n = 0, 1, 2 . . .. Estos son los llamados polinomios de Legendre. Enunciamos el resultado que se obtiene. Teorema IV.1 Los polinomios mónicos de Legendre P0 (x), P1 (x), P2 (x), . . . definidos por la relación de recurrencia P0 (x) = 1, P1 (x) = x, Pn+1 (x) = xPn (x) − n2 Pn−1 (x) 4n2 − 1 satisfacen las siguientes propiedades: para cada n = 0, 1, 2, 3, . . . (i) Pn (x) tiene n raı́ces reales diferentes en el intervalo [−1, 1] (ii) cualquier polinomio P (x) de grado n se puede escribir como combinación lineal de P0 (x), P1 (x), . . . , Pn (x), es decir, existen números reales c0 , . . . , cn (únicos) tal que n X P (x) = ci Pi (x) i=0 (iii) para todo m 6= n, Pn (x) y Pm (x) son ortogonales, es decir, +1 Z Pn (x)Pm (x)dx = 0 −1 (iv) si Q(x) es de grado menor que n entonces Z +1 Pn (x)Q(x)dx = 0. −1 Como ejemplo, tenemos la siguiente tabla de los primeros polinomios y sus raı́ces: IV.22 CAPÍTULO IV. INTEGRACIÓN NUMÉRICA n 0 1 Pn (x) 1 x 2 raı́ces q 0 √ ± 13 = ± 33 q √ 0, ± 35 = 515 r √ q √ 525±70 30 ± 17 3 ± 2 65 = ± 35 1 3 2 x − 3 x3 − 53 x 4 x4 − 67 x + 30 35 Note que las raı́ces de los polinomios de grado 2 y 3 son las mismas obtenidas antes usando el método de coeficientes indeterminados. IV.6.2. Método de Gauss-Legendre El método de Gauss-Legendre con n nodos para la integral cuadratura n X Gn [f ] = wi f (xi ) R +1 −1 f (x)dx es la i=1 donde x1 , x2 , . . . , xn son las n raı́ces de Pn (x), y los pesos wi son los correspondientes a la integral exacta del polinomio de interpolación para los datos (xi , f (xi )), i = 1, 2, . . . , n. Más precisamente, recordemos que para estos datos la interpolación de Lagrange (un polinomio de grado n − 1) está dada por I(x) = n X f (xi ) · Ln−1,i (x), i=1 donde Ln,i = Entonces Z +1 I(x)dx = −1 Y x − xj . x i − xj j6=i n X Z +1 f (xi ) i=1 Ln−1,i (x)dx, −1 y por lo tanto Z +1 wi = Ln−1,i (x)dx. −1 Esto da un método para calcular los wi de la cuadratura. Equivalentemente, los wi se pueden obtener con el método de coeficientes indeterminados para los nodos x1 , . . . , xn y los polinomios 1, x, x2 , . . . , xn−1 , de tal manera que la cuadratura es exacta para los polinomios 1, x, x2 , . . . , xn−1 . Se obtienen las n ecuaciones, para k = 0, 1, 2, . . . , n − 1, con las n incógnitas w1 , w2 , . . . , wn : Z +1 n X 1 − (−1)k+1 k wi · xi = xk dx = . k + 1 −1 i=1 IV.6. CUADRATURA DE GAUSS-LEGENDRE IV.23 Este método se ha implementado en el programa Matlab que se incluye adelante. Ahora justificamos el grado de precisión del método de Gauss-Legendre. Teorema IV.2 El método de Gauss-Legendre es exacto para todo polinomio de grado menor que 2n. Prueba. Sea P (x) un polinomio de grado menor que 2n. Si el grado de P (x) es menor que n entonces la cuadratura es exacta (por la construcción de los wi ). Si P (x) tiene grado al menos n y menor que 2n, entonces tomando el cociente con Pn (x) podemos escribir P (x) = Q(x)Pn (x) + R(x) donde los grados del cociente Q(x) y del residuo R(x) son menores que n. Por lo tanto, por el caso ya considerado, la cuadratura para R es exacta, es decir Z +1 R(x)dx = Gn [R]. −1 Por otra parte Z Z +1 P (x)dx = +1 Z Z +1 R(x)dx R(x)dx = Q(x)Pn (x)dx + −1 −1 −1 +1 −1 R +1 porque −1 Q(x)Pn (x)dx = 0 por la propiedad (iv) de los polinomios de Legendre en el teorema anterior. Además puesto que x1 , x2 , . . . , xn son las raı́ces de Pn (x), es decir Pn (xi ) = 0, se tiene que P (xi ) = Q(x)Pn (xi ) + R(xi ) = R(xi ), y por lo tanto las cuadraturas de P (x) y de R(x) son iguales, Gn [P ] = Gn [R]. Ası́ que Z +1 Z +1 R(x)dx = Gn [R] = Gn [P ]. P (x)dx = −1 −1 Hemos obtenido que la cuadratura es exacta para P (x) donde P (x) es cualquier polinomio de grado menor que 2n. Finalmente, en general la integral de interés es sobre un intervalos [a, b]. Para su evaluación, se usa un cambio de variable a(1 − t) + b(1 + t) x= 2 Con esto, Z b Z b − a +1 a(1 − t) + b(1 + t) f (x)dx = f dt 2 2 a −1 y por lo tanto la cuadratura de f en [a, b] con n nodos está dada por n b−a X a(1 − xi ) + b(1 + xi ) Gn [f ] = · wi · f 2 2 i=1 donde los xi son las raı́ces en [−1, 1] como antes, y los coeficietes wi son los mismos que antes. IV.24 IV.6.3. CAPÍTULO IV. INTEGRACIÓN NUMÉRICA Programa Matlab El siguiente programa Matlab cálcula las raı́ces del polinomio de Legendre necesario y los coeficiente de la cuadratura. Por supuesto, si esta función se va a usar repetidamente serı́a más eficiente precalcular estos, tenerlos disponibles y simplemente usarlos. El cálculo de las raı́ces se basa en la observación de que el polinomio de Legendre Pn (x) es igual al polinomio caracterı́stico de la siguiente matriz, llamada matriz de Jacobi: √ 0 0 0 0√ 1/ 3 √ 1/ 3 0 2/ 15 0 0 √ √ 0 2/ 15 0 3/ 35 0 √ √ 0 0 3/ 35 0 4/ 65 .. .. .. .. .. . . . . . 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .. . ··· ··· ··· ··· .. . 0 ··· 0 0 0 0 .. . √ 0 ··· 0 0 0 0 .. . n−2 4(n−2)2 −1 0 0 √ 0 0 0 0 .. . n−1 4(n−1)2 −1 √ n−1 4(n−1)2 −1 0 Esto se puede comprobar de la ecuación de recurrecia de los polinomios. La evaluacı́on de los coeficientes se basa en el método de coeficientes indeterminados. function [quad, raices, nodos, coefs] = GaussLegendre( f, a, b, N) % Entrada - f es el integrando introducido como una cadena de caracters % - a y b limites superior e inferior de integracion % - N es el numero de nodos en la cuadratura % Salida - quad es el valor de cuadratura % - raices es el vector de raices del polinomio de Legendre N % - nodos es el vector de nodos de la cuadratura e [a,b] % - coefs es el vector de pesos de la cuadratura % evaluacion de las N raices del polinomio de Legendre P_N de grado N, % usando el hecho de que P_N es el polinomio caracteristico de la % matriz de Jacobi J v = feval(@(n) n./sqrt(4*n.^2-1), 1:N-1); J = diag(v,-1)+diag(v,+1); raices = eig(J); % evaluacion de los nodos por medio de transformacion lineal nodos = (a*(1-raices)+b*(1+raices))/2; % evaluacion de los coeficientes de la cuadratura por el metodo de % coeficientes indeterminados V = (vander(raices))’; z = (feval(@(k) (1-(-1).^k)./k, N:-1:1))’; coefs = V\z; % evaluacion de la cuadratura quad = ((b-a)/2) * sum(coefs.*feval(f, nodos)); end ’f’ IV.6. CUADRATURA DE GAUSS-LEGENDRE Ejemplo. Usamos la rutina para evaluar R5 0 IV.25 exp(−x2 /2)dx con 8 nodos: >> [quad, raices, nodos, coefs] = GaussLegendre(@(x) exp(-x.^2/2),0,5,8) quad = 1.253315160546044 raices = -0.960289856497536 -0.796666477413627 -0.525532409916329 -0.183434642495650 0.183434642495650 0.525532409916329 0.796666477413627 0.960289856497536 nodos = 0.099275358756159 0.508333806465933 1.186168975209178 2.041413393760875 2.958586606239126 3.813831024790822 4.491666193534066 4.900724641243841 coefs = 0.101228536290375 0.222381034453377 0.313706645877884 0.362683783378367 0.362683783378358 0.313706645877890 0.222381034453373 0.101228536290377