1 1 INTRODUCCIÓN Y MOTIVACIÓN FUNDAMENTOS MATEMÁTICOS IV TEMA 6: Introducción a los métodos numéricos Slide 1 R.N. Banerjee Departamento de Matemática Aplicada, E.T.S.I. Telecomunicación Índice 1. Introducción y Motivación 1.1. Análisis del Error en el Método de Euler Slide 2 3 . . . . . . . . . . . . . . . . . . . . . . . 6 1.2. Una mejora del método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3. Otra modificación (mejora) del método de Euler . . . . . . . . . . . . . . . . . . . . 11 2. Desarrollos de Taylor de orden superior 15 2.1. Método directo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2. Método iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3. Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1 2 INTRODUCCIÓN Y MOTIVACIÓN 1. Introducción y Motivación Se consideran problemas de valor inicial de la forma: y 0 (x) = F (x, y(x)) y(x0 ) = y0 una edo (1) una condición inicial (2) Habitualmente, no es posible resolver analı́ticamente. Por tanto se busca una solución aproximada. Además, no se pretende conocer el valor aproximado de la solución real y(x) en Slide 3 todo punto x, sino solamente en algunos puntos xi , i [a, b] de interés. = {1, . . . , n} de un cierto intervalo IDEA FUNDAMENTAL: Desarrollo de Taylor. Sabemos que, gracias al polinomio de Taylor, es posible, para funciones suficientemente “suaves”, escribir y(x) = y(x0 ) + y 0 (x0 )(x − x0 ) + R(x, x0 ), donde R(x, x0 ) es el Resto de Taylor de orden dos. En el intervalo de interés [a, b], consideremos una colección de puntos {x0 , x1 = x0 + h, x2 = x1 + h = x0 + 2h, . . . , xn = xn−1 + h = x0 + nh} ⊂ [a, b], donde h ∈ R. Obviamente, n dependerá del h escogido. Observemos que gracias a (2) conocemos el valor de la solución en x0 : la condición inicial nos dice que es y0 Pero también, gracias al polinomio de Taylor y a la ecuación diferencial (1), podemos estimar el valor de la solución y(x) en x0 + h: en efecto, y(x1 ) ≈ y(x0 ) + y 0 (x0 )(x1 − x0 ) = y(x0 ) + y 0 (x0 )h = y(x0 ) + hF (x0 , y0 ) ≡ Y1 . Slide 4 Nuestro problema es ahora estimar y(x2 ). Para ello podemos utilizar de nuevo Taylor y escribir: y(x2 ) ≈ y(x1 ) + y 0 (x1 )(x2 − x1 ) = y(x1 ) + hF (x1 , y(x1 )). El problema es que no conocemos y(x1 ) sino sólo una aproximación Y1 . En esta situación, podemos probar a emplear la aproximación Y1 en lugar del valor exacto y(x1 ). De esta forma tendremos un valor aproximado Y2 del valor real y(x2 ) deseado. Ası́: y(x2 ) ≈ Y1 + hF (x1 , Y1 ) ≡ Y2 . 1 3 INTRODUCCIÓN Y MOTIVACIÓN De esta forma, y en general, podemos construir iterativamente las siguientes aproximaciones de y(x) en los puntos xi , i = {0, . . . , n} Slide 5 Y0 ∀i > 0, Yi+1 = y0 , = Yi + hF (xi , Yi ). Notemos que, que de esta forma, en cada paso, estamos empleando de forma efectiva para avanzar la solución del problema de valor inicial modificado z 0 (x) = F (x, z(x)) z(xi ) = Yi la EDO original una nueva condición inicial, que en cada paso nos saca, en general, de la trayectoria (solución) real original. Este esquema de calculo aproximado se denomina Método de las poligonales de Euler, o Euler básico. 1.1. Análisis del Error en el Método de Euler Observemos que 1. hemos introducido un error al sustituir el valor real de y en un punto xi por el valor aproximado obtenido a partir del desarrollo de Taylor truncado en primer orden. Este error se denomina error de truncamiento, error de discretización o error local, del método. 2. Hemos arrastrado este error al ir utilizando los valores aproximados Yi para calcular Yi+1 y siguientes. Además, habrı́a que tener en cuenta el error que se introduce al realizar los Slide 6 cálculos, dada la precisión finita del ordenador. A este último de le denomina error de redondeo o de representación. 3. A la combinación de todos ellos se le denomina Error Global del método, que es el que finalmente se observa. Observemos que el error de truncamiento en el cálculo de Yi+1 a partir de Yi (es decir, en un 00 = y 2!(θ) h2 , donde θ ∈ (xi , xi + h). Estudiemos el error en el primer paso, es decir E(x1 ) = E(x0 + h) = y(x1 ) − Y1 = ch2 , ya que los valores de x0 e y0 son y 00 (θ) conocidos (despreciamos los errores de redondeo). Hemos definido c = 2! , con θ ∈ (x0 , x0 + h = x1 ). Observemos que si podemos asumir que y 00 varı́a poco en el intervalo de longitud h en cuestión (en general, h es pequeño comparado con |a − b|) entonces, la paso) es E 1 4 INTRODUCCIÓN Y MOTIVACIÓN + h2 ) y (x0 + h2 , x0 + h) es despreciable y podemos suponer c constante. Entonces, el error de truncamiento al calcular Y 1 ≡ x0 + y0 h 2 2 variación de y 00 en cada subintervalo (x0 , x0 es muy aproximadamente E(x0 + ¡ ¢2 h 1 h2 ) = c h2 = c = E(x0 + h). 2 4 4 (3) Por tanto, al error cometido al calcular Y1 desde x0 en dos pasos de h 2 , que denotamos mediante Y 1 + 1 , contribuirán dos elementos: el error en el dato inicial Y 1 y el error de 2 Slide 7 2 2 truncamiento en el paso de Y 1 a Y 1 + 1 , ambos aproximadamente iguales por (3) a 2 2 2 1 4 E(x0 + h). Por tanto, el error total al calcular aproximadamente y(x1 ) en dos pasos, al que ¢ ¡ h denotamos mediante E (x0 + h 2 ) + 2 será la mitad del cometido al hacerlo en un paso, es decir: ¡ ¢ 1 E (x0 + h2 ) + h2 = E(x0 + h). 2 Entonces, una comparación de los errores cometidos por ambas vı́as: y(x0 + h) − Y1 y(x0 + h) − Y 1 1 2+2 = = E(x0 + h) ¢ ¡ E (x0 + h2 ) + h2 , nos permite, restando y sustituyendo, obtener: ¡ E (x + h ) + h ¢ 0 2 2 1 E(x0 + h) 2 Slide 8 = = Y 12 + 12 − Y1 Y 12 + 12 − Y1 , lo cual nos permite estimar ambos errores directamente a partir sólo de cantidades computadas. De aquı́ se obtiene la siguiente Regla práctica que parece funcionar bien: Repı́tanse los cálculos con un h la mitad del original. Si los valores coinciden con los obtenidos primero, después de los correspondientes redondeos, en k decimales, se entiende que se tienen k decimales significativos. 1 5 INTRODUCCIÓN Y MOTIVACIÓN Finalmente, observemos que, dada la simplicidad del método de Euler, podemos acotar el error debido al truncamiento en n–pasos. En efecto, el error en cada intervalo (xi , xi + h) es de la θ ∈ (xi , xi + h). Si tomamos Mi ≡ máxθ∈(xi ,xi +h) y 00 (θ) M entonces tendremos |Ei | 6 2i h2 , y por tanto, el error total (debido a truncamiento) E en 2 Pn n–pasos, es decir, en (x0 , x0 + nh) vendrá acotado por |E| 6 h2 i=1 Mi . Tomando M ≡ máx Mi , tendremos h2 |E| 6 nM. 2 1 , entonces |E| ∼ h. Observemos que asintóticamente, dado que n ∼ h forma Ei Slide 9 = y 00 (θ) 2 2! h , donde 1.2. Una mejora del método de Euler Recordemos que la fórmula básica que hemos empleado para avanzar un paso es Taylor de primer orden, es decir: y(x) ≈ y(x0 ) + y 0 (x0 )(x − x0 ). Por tanto, empleamos el valor de la pendiente en el punto anterior, para calcular una correcci ón al valor anterior conocido, es decir: y(x + nh) 0 ∆y ≈ ≡ y(x0 + (n − 1)h) + ∆y hy 0 (x0 + (n − 1)h). En general, por tanto, la tasa de variación de la solución y(x) entre x0 Slide 10 + (n − 1)h y x0 + nh, y por tanto la corrección necesaria, estará, o bien subestimada, o bien sobre-estimada por el valor de la pendiente en . Para intentar mejorarla, podemos tomar un promedio de ambas, es ≡ h 21 (y 0 (x0 + (n − 1)h) + y 0 (x0 + nh)), que gracias a la EDO podemos escribir como ∆y ≡ h 12 [F ((x0 + (n − 1)h), y(x0 + (n − 1)h)) + F ((x0 + nh), y(x0 + nh))]. Notemos, sin embargo, que el valor de y(x0 + nh) es justamente lo que intentamos calcular, y decir ∆y nos es, por ello, desconocido. Sin embargo, podemos estimarlo empleando un paso del método de Euler básico; ası́, podemos tomar y(x0 + nh) ≈ y(x0 + (n − 1)h) + hF ((x0 + (n − 1)h), y(x0 + (n − 1)h)). De esta forma, y recordando que en cada paso tomamos como condición inicial el valor aproximado de y 1 6 INTRODUCCIÓN Y MOTIVACIÓN antes calculado, llegamos al esquema: Y0 = y0 Yi+1 ∆Yi = Yi + ∆Yi " ≡ h 21 # F (xi , Yi ) + F (xi+1 , Yi + hF (xi , Yi )) . 1 paso Euler básico Este anterior esquema se conoce en la literatura con la denominación de Método de Euler Mejorado. Slide 11 1.3. Otra modificación (mejora) del método de Euler Para alcanzar el anterior esquema hemos mejorado la estimación de la tasa de variación de la función solución mediante un promedio de pendientes en los extremos del intervalo (x0 + (n − 1)h, x0 + nh). Ello nos conducı́a a la necesidad de estimar previamente el valor de y(x0 + nh), mediante un paso de Euler básico. Puesto que para este último método sabemos que el error cometido se reduce en una cuarta parte si reducimos la “longitud del paso” a la mitad, podemos pensar en utilizar como estimación de la tasa de variación la pendiente en el punto medio del intervalo (x0 + (n − 1)h, x0 + nh), es decir en x0 + (n − 1)h + 21 h. + (n − 1)h + 21 h), es decir, 1 F (x0 + (n − 1)h + 2 h, y(x0 + (n − 1)h + 21 h)) necesitamos estimar y(x0 + (n − 1)h + 21 h), lo cual podemos hacer mediante un paso de Euler básico pero con paso h 2 , por tanto, con mejor error. De esta forma, estarı́amos empleando la siguiente Notemos que para estimar y 0 (x0 aproximación analı́tica : y(x) ≈ y(x0 ) + y 0 (x0 + Slide 12 ¤ £ h )(x − x0 ) = y(x0 ) + hF x0 + h2 , y(x0 ) + y 0 (x0 ) h2 . 2 Nótese que esta expresión no es otra cosa que la ecuación de la recta que pasa por (x0 , y(x0 ) con pendiente y 0 (x0 + h2 ). Esta recta toma, en x = x0 + h el valor £ ¤ y(x0 + h) ≈ y0 + hF x0 + h2 , y0 + y 0 (x0 ) h2 . (4) Proposición 1.1. La expresión (4) equivale a tomar un desarrollo de Taylor hasta orden 2 para aproximar y(x). Demostración. (Esquema) 1. Taylor entorno a (x0 , y0 ) para un función de dos variables f (x, y) es, tomando 2 7 DESARROLLOS DE TAYLOR DE ORDEN SUPERIOR x = x 0 + hx e y = y 0 + hy ¯ ¯ ∂f (x, y) ¯¯ ∂f (x, y) ¯¯ h + hy + · · · . x ∂x ¯(x0 ,y0 ) ∂y ¯(x0 ,y0 ) f (x0 + hx , y0 + hy ) = f (x0 , y0 ) + 2. Sustituyendo Taylor para F se obtiene: Slide 13 ¤ £ x0 + h2 , y0 + y 0 (x0 ) h2 en (4), y usando F (x0 , y0 ) = y 0 (x0 ) y(x0 + h) = y0 + hy 0 (x0 ) + h2 2 · 3. Derivando la EDO se prueba que y 00 (x0 ) = · ¯ ∂F (x,y) ¯ ¯ ∂x ¯ ∂F (x,y) ¯ ¯ ∂x (x0 ,y0 ) (x0 ,y0 ) + y 0 (x0 ) + y 0 (x0 ) ¯ ∂F (x,y) ¯ ¯ ∂y ¯ ∂F (x,y) ¯ ¯ ∂y de donde, sustituyendo arriba, se obtiene el resultado deseado. (x0 ,y0 ) ¸ (x0 ,y0 ) ¸ + ··· . , Tenemos por tanto, a partir de (4) el siguiente esquema numérico de cálculo: Y0 = y0 Yi+1 ∆Yi = Yi + ∆Yi ≡ hF (xi + h2 , Yi + h2 F (xi , Yi )) . 1 paso Euler básico Este esquema se conoce en la literatura con la denominación de Método de Euler Modificado. Observemos que, gracias a la proposición anterior, un esquema basado en aproximación Slide 14 tendrá error de truncamiento local E = y 000 (θ) 3 3! h . Realizando un estudio de errores similar al que se hizo para el método de Euler, es posible llegar (Hágase como ejercicio!) a las siguientes fórmulas de estimación de error: ¡ ¢ E (x0 + h ) + h 2 2 1 4 E(x0 + h) = 1 3 = 1 3 ³ ³ Y 21 + 12 − Y1 ´ ´ Y 21 + 12 − Y1 , lo cual, de nuevo, nos permite estimar ambos errores directamente a partir sólo de cantidades computadas. Análogamente, también es posible acotar el error debido al truncamiento en n–pasos, mostrando que es de la forma |E| 6 |E| ∼ h2 . h3 2 nM , y por tanto asintóticamente tendremos 2 DESARROLLOS DE TAYLOR DE ORDEN SUPERIOR 8 2. Desarrollos de Taylor de orden superior Obviamente, es posible pensar en utilizar fórmulas de Taylor de orden superior a 2, siempre que las derivadas sucesivas de F (x, y) tengan sentido y puedan calcularse “con cierta facilidad”. √ = F (x, y) = x + y , para la que y 00 y p x3 y + xy 3 , cuyas derivadas sucesivas son sucesivas no existen en 0, e y 0 = F (x, y) = Contraejemplos de ambas condiciones son y 0 bastante complicadas. Si estos impedimentos no existen, es posible emplear desarrollos de orden superior. Veamos cómo hacerlo. Slide 15 2.1. Método directo Es bien sabido de FMT–II que bajo ciertas hipótesis, es posible, conocidos los valores de las derivadas sucesivas en un punto x0 , escribir una función y(x) en la forma y(x0 + h) = y(x0 ) + y 0 (x0 )h + y 00 (x0 ) 2 y 000 (x0 ) 3 y 0000 (x0 ) 4 h + h + h + ··· , 2! 3! 4! siempre que la serie converja. Es posible, entonces, emplear esta expresión para evaluar aproximadamente f en los puntos de interés. Ejemplo 2.1. Considérese la ecuación diferencial y 0 = x2 + y , con y(0) = 1. Podemos calcular fácilmente las derivadas sucesivas: y 00 = 2x + y 0 , y 000 = 2 + y 00 , y n) = y n−1) , n > 4, que pueden ser fácilmente evaluadas en x = 0 y llegar por tanto a la expresión: y(h) = 1 + h + h3 h4 h2 + + + ··· 2 2 8 lo cual, truncando donde se desee, permite evaluar aproximadamente y(h). Slide 16 ♦ El anterior método adolece, en general, del inconveniente de que para mantener la precisión para h cada vez mayor, es necesario incluir cada vez más términos del desarrollo. En este caso, si las derivadas sucesivas son difı́ciles de calcular, el método es altamente ineficaz. 2.2. Método iterativo Podemos intentar utilizar una fórmula de Taylor de orden superior, pero de orden fijo, al igual que hicimos con el método de Euler, es decir, iterándola en cada paso. Esperamos, obviamente obtener mejor precisión que con aquél, aunque como veremos, ello será a expensas de aumentar considerablemente el esfuerzo computacional. Además, deberemos seguir siendo capaces de obtener expresiones para las derivadas sucesivas necesarias. 2 9 DESARROLLOS DE TAYLOR DE ORDEN SUPERIOR Ejemplo 2.2. Considérese de nuevo el ejemplo 2.1, es decir, la ecuación diferencial y 0 = x2 + y , con y(0) = 1. Intégrese numéricamente con una fórmula de Taylor reteniendo hasta los términos de cuarto orden. Nuestra fórmula de aproximación básica será ahora y(x0 + h) ≈ y(x0 ) + y 0 (x0 ) + y 00 (x0 ) 2 y 000 (x0 ) 3 y 0000 (x0 ) 4 h + h + h 2! 3! 4! Puesto que seguimos teniendo explı́citamente y 00 = 2x + y 0 , y 000 = 2 + y 00 , y 0000 = y 000 , podemos establecer el siguiente esquema: Slide 17 Y0 = y0 = 1 Yi0 = x2i + Yi , Yi00 = 2xi + Yi0 , yi000 = 2 + Yi00 , Yi0000 = Yi000 Yi+1 ∆Y i = Yi + ∆Yi ≡ hYi0 + h2 00 2! Yi + h3 000 3! Yi + h4 0000 4! Yi ♦ Resulta claro el gran coste computacional que este anterior esquema supone. Sin embargo, resulta ser más preciso en general, pues el error de truncamiento local es ahora O(h5 ), y por tanto tendremos E(x0 + h) = ch5 . Asumiendo hipótesis análogas a los estudios realizados anteriormente, podemos asumir c constante en los correspondientes subintervalos de longitud ¡ ¢5 h 1 E(x0 + h2 ) = c h2 = 32 E(x0 + h) y obtener entonces 2 y escribir aproximadamente ¢ ¡ h 1 h aproximadamente E (x0 + 2 ) + 2 = 16 E(x0 + h), lo cual lleva a las estimaciones de error: ¡ ¢ E (x0 + h ) + h 2 2 Slide 18 E(x0 + h) = 1 15 = 16 15 ³ ³ Y 21 + 21 − Y1 ´ ´ Y 21 + 21 − Y1 , (5) 2.3. Métodos de Runge-Kutta Fueron desarrollados por Runge (1856-1927) y Kutta (1867-1944). Tienen la ventaja de, manteniendo la precisión de las fórmulas de orden superior, no necesitar de las derivadas para el cálculo. Realizaremos el desarrollo teórico sólo para el caso más sencillo. Partimos de nuevo del desarrollo de Taylor para y(x0 + h), esto es y(x0 + h) = y(x0 ) + y 0 (x0 )h + Observemos que a partir de la EDO y 0 y 00 (x0 ) 2 h + ··· . 2! = F (x, y) tenemos, derivando, que 2 DESARROLLOS DE TAYLOR DE ORDEN SUPERIOR 10 y 00 (x) = ∂x F (x, y) + ∂y F (x, y)y 0 (x), lo cual nos permite eliminar la derivada segunda del desarrollo anterior, y obtener, hasta orden h2 : h i h2 0 ,y0 ) 0 ,y0 ) + ∂F (x . (6) y(x0 + h) = y(x0 ) + y 0 (x0 )h + ∂F (x ∂x ∂y 2 La idea es ahora intentar re–escribir esta expresión sin derivadas parciales. Para ello nos inspiraremos en el método de Euler modificado, ya que el “truco” que nos permitió probar la proposición 1.3, pero empleado al revés, nos permitirá hacerlo. Por ello, buscaremos escribir (6) en la forma Slide 19 y(x0 + h) = y(x0 ) + Ahy 0 (x0 ) + BhF (x0 + Ch, y0 + DhF (x0 .y0 )), (7) donde han de determinarse las constantes A, B, C, D . Observemos que (7) no es otra cosa que una forma genérica que engloba tanto al método de Euler mejorado como al modificado (ajustando convenientemente las constantes). Dado que, por Taylor, F (x0 +Ch, y0 +DhF (x0 , y0 )) = F (x0 , y0 )+Ch ∂F (x0 , y0 ) ∂F (x0 , y0 ) +DhF (x0 , y0 ) +· · · ∂x ∂y , si sustituimos en (7) y simplificamos tendremos que h i ∂F (x0 ,y0 ) 0 ,y0 ) y(x0 +h) = y(x0 )+(A+B)hF (x0 , y0 )+Bh2 C ∂F (x + DhF (x , y ) . 0 0 ∂x ∂y (8) Comparando ahora las ecuaciones (6) y (8), vemos que podemos igualarlas tomando, por ejemplo A + B = 1, B = 21 , C = 1, D = 1, de donde obtenemos los valores A= 1 1 , B = , C = 1, D = 1. 2 2 Sustituyendo estos valores en (7) obtenemos finalmente 1 1 y(x0 + h) = y(x0 ) + hF (x0 , y0 ) + hF (x0 + h, y0 + hF (x0 .y0 )), 2 2 Slide 20 que es justamente la fórmula de aproximación del método de Euler mejorado. Observemos que los valores A = 0, B = 1, C = 12 , D = 21 , dan lugar al método de Euler modificado. Podemos, para más comodidad re-escribir la anterior fórmula en la forma 1 y(x0 + h) = y(x0 ) + (u1 + u2 ), u1 = hF (x0 , y0 ), u2 = F (x0 + h, y0 + u1 ). 2 Vemos que son necesarias dos etapas u1 , u2 para calcular un paso. Es posible obtener fórmulas de Runge–Kutta de mayor orden reteniendo más términos del desarrollo de Taylor de y(x0 + h). Si se emplean hasta orden tres se obtienen las fórmulas de 2 DESARROLLOS DE TAYLOR DE ORDEN SUPERIOR 11 tres etapas y(x0 + h) v = y(x0 ) + 61 (v1 + v2 + v3 ), siendo 1 = hF (x0 , y0 ) = u1 , v2 = hF (x0 + 21 h, y0 + 12 v1 ), v3 = hF (x0 + h, y0 + 2v2 − v1 ). Si se emplean los términos hasta orden cuatro se obtiene el más empleado de los métodos de Slide 21 Runge-Kutta, en este caso de cuatro etapas, según las fórmulas: y(x0 + h) w1 w2 w3 w4 = y(x0 ) + 61 (w1 + w2 + w3 + w4 ), siendo = hF (x0 , y0 ) = v1 , = hF (x0 + 21 h, y0 + 12 v1 ) = v2 , = hF (x0 + 21 h, y0 + 12 w2 , = hF (x0 + h, y0 + w3 ). Es posible probar que las estimaciones de error (5) alcanzadas para el caso del método iterativo basado en uso directo de Taylor, se mantienen para el método de Runge-Kutta de cuarto orden.