Integración numérica. Práctica con Mathematica Cuando solamente se conocen algunos valores particulares de una función f (x), o cuando siendo ésta conocida, no se dispone de una primitiva expresada convenientemente, se utilizan Rb métodos numéricos para obtener un valor aproximado de la integral a f (x)dx . Supondremos dividido el intervalo [a, b] en n partes iguales de longitud h = b−a mediante n los puntos a = x0 < x1 < x2 < ...... < xn−1 < xn = b , y supondremos conocidos los valores y0 = f (x0 ), y1 = f (x1 ), .... ......, yn = f (xn ) . Método de los trapecios a) Determinamos la función de interpolación lineal l(x) que cumple l(x0 ) = y0 , l(x1 ) = y1 . Según la fórmula que conocemos la expresión de esta función es l(x) = x − x0 x − x1 y0 + y1 x0 − x1 x1 − x0 También puede verse del siguiente modo: Por pasar por los puntos (x0 , y0 ), (x1 , y1 ), la gráfica 0 0 de l(x) es una recta de pendiente xy11 −y . Por lo tanto es l(x) = y0 + xy11 −y (x − x0 ) . −x0 −x0 b) Calculamos: Zx1 h (y0 + y1 ) 2 l(x)dx = x0 Nota.- Si y0 , y1 ≥ 0, Rx1 l(x)dx coincide con el área del trapecio rectángulo de bases x0 paralelas al eje OY de longitudes y0 , y1 , y altura situada en el eje OX coincidente con el intervalo [x0 , x1 ] de longitud h . c) Consideramos ahora la integral Rb a f (x)dx = Rx1 x0 Rb a f (x)dx que queremos aproximar. f (x)dx + Rx2 f (x)dx + .... + x1 Rxn f (x)dx xn−1 En cada una de las integrales sumandos reemplazamos f (x) por la función de interpolación lineal correspondiente a (x0 , y0 ), (x1 , y1 ) en la primera, a (x1 , y1 ), (x2 , y2 ) en la segunda, .... , a (xn−1 , yn−1 ), (xn , yn ) en la última, obteniendo la suma h2 (y0 + y1 ) + h2 (y1 + y2 ) + .... + h (y + yn ) = 2 n−1 = h [y0 + 2y1 + 2y2 + ... + 2yn−1 + yn ] 2 1 Nota.- Si f (x) ≥ 0, ∀x ∈ [a, b], el método de los trapecios consiste en aproximar el área bajo la curva por la suma de las áreas de los trapecios rectángulos con altura de longitud h coincidente con el intervalo [xi−1 , xi ] del eje OX, con las dos bases paralelas al eje OY de longitudes yi−1 , yi , y con lado oblicuo igual a la cuerda que une los puntos de la gráfica de coordenadas (xi−1 , y−i1 ), (xi , yi ). Ejemplo.- Aproximar : R3 1 ex dx x con el método de los trapecios dividiendo el intervalo [1, 3] a) En 5 partes iguales. b) En 10 partes iguales. c) En 50 partes iguales. Comparar el resultado de cada apartado, con el que se obtiene con el comando NIntegrate de Mathematica. A continuación se reproducen las sentencias utilizadas para resolver el apartado b) del ejemplo. Notar que para los demás apartados basta cambiar en la línea primera el valor de n y activar a continuación todas las demás. Para cualquier otro ejemplo o ejercicio, será suficiente con modificar las líneas en las que se introducen los valores de n, a, b, f (x) y activar las demás instrucciones. In[1]: n = 10 In[2] a = 1 In[3] b = 3 In[4]: h=(b-a)/n In[5]: x[j_] = a+j*h In[6]: f[t_] = E^t/t In[7]: y[j_] = f[x[j]] In[8]: N[h/2*(y[0]+2Sum[y[j],{j,1,n-1}]+y[n]),20] Out[8]= 8.0535744837047745276 In[9]: NIntegrate[f[x], {x, 1, 3}] Out[9]= 8.0387147542694798025 Ejercicio.- Aproximar R2 √ x3 + 1.dx con el método de los trapecios dividiendo el inter- −1 valo [−1, 2] : a) En 8 partes iguales. b) En 15 partes iguales. c) En 30 partes iguales. Comparar el resultado de cada apartado, con el que se obtiene con el comando NIntegrate de Mathematica. Método de Simpson 2 a) Determinaremos la función de interpolación cuadrática c(x) que cumple c(x0 ) = y0 , c(x1 ) = y1 , c(x2 ) = y2 . c(x) puede expresarse en la forma: c(x) = α + β(x − x0 ) + γ(x − x0 )(x − x1 ) para ciertos números reales α, β, γ , por ser {1, (x − x0 ), (x − x0 )(x − x1 )} una base del espacio vectorial real P2 de los polinomios con coeficientes reales de grado menor o igual que dos. Determinemos α, β y γ : c(x0 ) = α = y0 0 0 c(x1 ) = α + β(x1 − x0 ) = y1 ⇒ β = xy11 −y = y1 −y −x0 h 0 0 c(x2 ) = y0 + y1 −y (x2 − x0 ) + γ(x2 − x0 )(x2 − x1 ) = y2 ⇒ y2 − y0 = y1 −y .2h + γ.2h2 ⇒ h h 1 +y0 . Y así es: y2 − 2y1 + y0 = = 2γh2 ⇒ γ = y2 −2y 2h2 c(x) = y0 + b) Calculemos Rx2 y1 − y0 y2 − 2y1 + y0 (x − x0 )(x − x1 ) (x − x0 ) + h 2h2 c(x)dx x0 Zx2 c(x)dx = h [y0 + 4y1 + y2 ] 3 x0 c) Supondremos que n es par, y sea Rb f (x)dx la integral que queremos aproximar. a Zb a f (x)dx = Zx2 x0 f (x)dx + Zx4 f (x)dx + ..... + x2 Zxn f (x)dx xn−2 En cada una de las integrales sumando, reemplazamos f (x) por la función de interpolación cuadrática correspondiente a los puntos (x0 , y0 ), (x1 , y1 ), (x2 , y2 ) en la primera, a (x2 , y2 ), (x3 , y3 ), (x4 , y4 ) en la segunda, .... , a (xn−2 , yn−2 ), (xn−1 , yn−1 ), (xn , yn ) en la última. Obteniendo así la suma: h h h [y0 + 4y1 + y2 ] + [y2 + 4y3 + y4 ] + .... + [yn−2 + 4yn−1 + yn ] = 3 3 3 = h [y0 + 4y1 + 2y2 + 4y3 + 2y4 + 4y5 + 2y6 + ... + 2yn−2 + 4yn−1 + yn ] = 3 n n 2 2 X X h h y2k−1 + 2 y2k + yn ] = [E + 4I + 2P ] = [y0 + 4 3 3 k=1 k=1 donde E representa la suma de los valores extremos, es decir, y0 e yn , I representa la suma de los valores de índice impar, es decir, y1 , y3 ....., yn−1 (que son los valores de lugar par 3 por ser 0 el primer subíndice), y P representa la suma de los valores de índice par, es decir, y2 , y4 ....., yn−2 (que son los valores de lugar impar). Ejemplo.- Aproximar R3 1 ex dx x con el método de Simpson dividiendo el intervalo [1, 3] : a) En 10 partes iguales. b) En 50 partes iguales. Comparar el resultado de cada apartado, con el que se obtiene con el comando NIntegrate de Mathematica. A continuación se reproducen las sentencias utilizadas para resolver el apartado a) del ejemplo. Notar que para el apartado b) basta cambiar en la línea primera el valor de n y activar a continuación todas las demás. Para cualquier otro ejemplo o ejercicio, será suficiente con modificar las líneas en las que se introducen los valores de n, a, b, f (x) y activar las demás instrucciones. In[1]: n = 10 In[2] a = 1 In[3] b = 3 In[4]: h=(b-a)/n In[5]: x[j_] = a+j*h In[6]: Table[x[j],{j,0,n}] Out[6]= {1, 6/5, 7/5, 8/5, 9/5, 2, 11/5, 12/5, 13/5, 14/5, 3} In[7]: f[t_] = E^t/t In[8]: y[j_] = f[x[j]] In[9]: N[h/3*(y[0]+4Sum[y[2j-1],{j,1,n/2}]+2Sum[y[2j],{j,1,n/2}]+y[n]),20] Out[9]= 8.0387850835535905025 In[10]: NIntegrate[f[x], {x, 1, 3}] Out[10]= 8.0387147542694798025 Ejercicio.- Aproximar R2 √ x3 + 1.dx con el método de Simpson dividiendo el intervalo −1 [−1, 2] : a) En 10 partes iguales. b) En 50 partes iguales. Comparar el resultado de cada apartado, con el que se obtiene con el comando NIntegrate de Mathematica. 4