1 Deducción de las Ecuaciones del Método de Runge-Kutta El problema consiste en encontrar una solución numérica a la ecuación diferencial dy ordinaria de primer orden: = f ( x, y ) sujeta a la condición inicial y ( x0 ) = y 0 . El dx objetivo consiste en encontrar aproximaciones satisfactorias para los valores de la solución y ( x ) en un conjunto especificado de valores de x denotados como x1 , x 2 , x3 , x 4 " . Los valores exactos los denotaremos como y ( x1 ), y ( x 2 ), y ( x3 )" y sus valores aproximados los denotaremos como y1 , y 2 , y3 , y 4 " Empezamos aproximando el valor de y en el punto x1 = x0 + ∆x , esto es, y ( x1 ) = y 0 + ∆y . La manera mas simple de hacer esto consiste en aproximar ∆y por la estimación acostumbrada para el verdadero incremento, o sea ∆y ≅ dy = y ′( x0 )∆x . La ecuación diferencial misma nos da el valor de la derivada en el punto ( x0 , y 0 ) , esto es, y ′( x0 ) = f ( x0 , y 0 ) ; y entonces ∆y ≅ f ( x0 , y 0 )∆x y por lo tanto y ( x1 ) = y 0 + ∆y ≅ y 0 + f ( x0 , y 0 )∆x = y1 Una vez que y1 ha sido obtenida como la aproximación a y ( x1 ) , el mismo procedimiento puede repetirse en ( x1 , y1 ) para obtener y ( x 2 ) = y ( x1 ) + ∆y ≅ y1 + f (x1 , y1 )∆x = y 2 ; y así sucesivamente hasta donde se necesite. Este método se conoce con el nombre de “Método de Euler” Ahora bien, habiendo obtenido y1 como una primera aproximación a y ( x1 ) por el método de Euler, podemos usar ahora la ecuación diferencial para calcular y ′ en el nuevo punto P1 : ( x1 , y1 ) y usar entonces el promedio de las derivadas en los puntos P0 : ( x0 , y 0 ) y P1 : ( x1 , y1 ) para obtener una mejor aproximación de ∆y , y por tanto de y ( x1 ) antes de calcular la siguiente aproximación y ( x 2 ) . Este método nos da el 1 valor ∆y ≅ [ y ′( x0 ) + y ′( x1 )]∆x , y la estimación mejorada del siguiente punto es 2 1 [ f (x0 , y0 ) + f (x1 , y1 )]∆x = ( y1 )2 . Este proceso se conoce 2 con el nombre de “Método Modificado de Euler” entonces: y 0 + ∆y ≅ y 0 + Otra posibilidad adicional, después de haber obtenido y1 como una primera aproximación a y ( x1 ) por el método de Euler, consiste en reaproximar ∆y y y ( x1 ) usando la derivada en el punto medio de P0 : ( x0 , y 0 ) y P1 : ( x1 , y1 ) en lugar de usar el promedio de las derivadas, esto es en el punto: 2 x + x1 y 0 + y1 M : 0 , . Esto nos da la estimación mejorada 2 2 1 ∆x x + x1 y 0 + y1 , , y 0 + f ( x0 , y 0 )∆x ∆x , y esto nos da una ∆y ≅ f 0 ∆x = f x0 + 2 2 2 2 1 ∆x , y 0 + f ( x0 , y 0 )∆x ∆x . tercera aproximación a y ( x1 ) como: ( y1 )3 = y 0 + f x0 + 2 2 Este proceso se conoce con el nombre de “Método de Runge” El método de Runge-Kutta es básicamente una generalización de esos tres procedimientos simples en el que en cada paso se calculan tres o mas estimaciones de ∆y . El valor de ∆y que se usa entonces para calcular el siguiente valor de y es una combinación lineal de esas estimaciones en la cual las constantes de combinación se escogen para hacer el error tan pequeño como sea posible. En el método de Runge-Kutta de tercer orden se toman los siguientes tres estimados de ∆y : (∆y )1 = f (x0 , y 0 )∆x que es la estimación del método de Euler; (∆y )2 = f [x0 + p∆x, y 0 + p(∆y )1 ]∆x ; 0 < p < 1 ; que es parecido al estimado del 1 método de Runge excepto que en lugar de evaluar en el punto medio (con p = ) la 2 derivada se calcula en un punto P : [x0 + p∆x, y 0 + p(∆y )1 ] , que todavía no se ha determinado; y (∆y )3 = f [x0 + q∆x, y 0 + r (∆y )2 + (q − r )(∆y )1 ]∆x ; 0 < q , r < 1 en donde q y r deben de calcularse. Finalmente el valor de ∆y que se usa finalmente para calcular y1 se toma como: (∆y )4 = a(∆y )1 + b(∆y )2 + c(∆y )3 en donde a,b,c son parámetros que igual que los parámetros p,q,r deben escogerse para dar la mas alta precisión al estimar ∆y . Los detalles de este cálculo pueden consultarse en el libro “Advanced Engineering Mathematics” de C.R.Wylie; Third Edition, McGraw-Hill, 1966. Dicho procedimiento nos lleva a un sistema de cuatro ecuaciones con seis 1 1 1 ; p 2b + q 2 c = ; prc = incógnitas: a + b + c = 1 ; pb + qc = de donde 2 3 6 pueden despejarse cuatro de los parámetros en función de los otros dos, obteniendo: 6 pq − 3( p + q ) + 2 2 − 3q 2 − 3p q(q − p ) ; b= ; c= a= ; r= 6 pq 6 p( p − q ) 6q(q − p ) p(2 − 3 p ) Puesto que p y q son arbitrarias, tenemos entonces una familia de fórmulas biparámetricas que pueden usarse para resolver la ecuación diferencial de primer 4 orden con una precisión del orden de (∆x ) . 3 Dos casos especiales del “Método de Runge-Kutta de Tercer Orden” vale la pena anotar. Para listarlos usaremos la notación convencional: ∆x = h ; (∆y )1 = k1 ; (∆y )2 = k 2 ; (∆y )3 = k 3 1 3 ; b=0 ; c= ; 4 4 1 ∆y ≅ (∆y )4 = (k1 + 3k 3 ) 4 k1 = f ( x0 , y 0 )h a= CASO 1: p= 1 2 ; q=r= 3 3 1 1 k 2 = f x0 + h, y 0 + k1 h 3 3 2 2 k 3 = f x0 + h, y 0 + k 2 h 3 3 1 3 2 ; b=c= ; p=q=r= 4 8 3 1 ∆y ≅ (∆y )4 = (2k1 + 3k 2 + 3k 3 ) 8 k1 = f ( x0 , y 0 )h a= CASO 2: 2 2 k 2 = f x0 + h, y 0 + k1 h 3 3 2 2 k 3 = f x0 + h, y 0 + k 2 h 3 3 La discusión anterior puede extenderse sin dificultad, (excepto los detalles), para llegar a procedimientos de solución en los cuales el error es del orden de h 5 = (∆x )5 En particular los dos conjuntos de fórmulas siguientes son bastante útiles: 1 (k1 + 2k 2 + 2k 3 + k 4 ) 6 k1 = f ( x0 , y 0 )h ∆y ≅ (∆y )5 = CASO 3: 1 1 k 2 = f x0 + h, y 0 + k1 h 2 2 1 1 k 3 = f x0 + h, y 0 + k 2 h 2 2 k 4 = f ( x0 + h, y 0 + k 3 )h 4 1 (k1 + 3k 2 + 3k 3 + k 4 ) 8 k1 = f ( x0 , y 0 )h ∆y ≅ (∆y )5 = CASO 4: 1 1 k 2 = f x0 + h, y 0 + k1 h 3 3 2 1 k 3 = f x0 + h, y 0 − k1 + k 2 h 3 3 k 4 = f ( x0 + h, y 0 + k1 − k 2 + k 3 )h El proceso de solución basado en el CASO 3 se conoce usualmente como “El Método de Runge-Kutta” 5 Ejemplo de solución de una Ecuación Diferencial de Primer Orden por el Método de Runge-Kutta: y'=2xy n 0 1 2 3 4 5 6 7 8 9 10 Xn 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 Yn 1.0000 1.2337 1.5527 1.9937 2.6116 3.4902 4.7586 6.6188 9.3923 13.5969 20.0813 k1 0.20000 0.27141 0.37265 0.51836 0.73126 1.04706 1.52274 2.25040 3.38121 5.16682 8.03251 k2 k3 0.23100 0.23426 0.31496 0.31997 0.43475 0.44252 0.60827 0.62041 0.86341 0.88257 1.24426 1.27483 1.82157 1.87088 2.71041 2.79091 4.10066 4.23375 6.31032 6.53331 9.87998 10.25872 k4 kprom 0.27154 0.23367 0.37287 0.31902 0.51876 0.44099 0.73195 0.61795 1.04826 0.87858 1.52481 1.26834 2.25401 1.86028 3.38751 2.77342 5.17788 4.20465 8.05208 6.48436 12.74279 ######## 6 k1 = hf ( x n , y n ) Método de Runge – Kutta ejemplo resuelto con detalles y ′ = 2 xy ; 0 f ( x, y ) = 2 xy ; x n +1 = x n + h y (1) = 1 ; h = 0.10 y n +1 = y n + k prom x1 = 1.0000 y1 = 1.0000 y1 = 1.0000 f = 2.0000 k1 = 0.2000 x 2 = 1.1000 2 x 2 = 1.1000 y 2 = 1.2337 y 2 = 1.2337 f = 2.714083 k1 = 0.27141 x3 = 1.2000 3 x3 = 1.2000 y 3 = 1.5527 4 x 4 = 1.3000 y 4 = 1.9937 k prom = y 3 = 1.5527 f = 3.72648 k1 = 0.37265 1 (k1 + 2k 2 + 2k 3 + k 4 ) 6 k2 k3 h = 1.0500 2 k y1 + 1 = 1.1000 2 f = 2.3100 k 2 = 0.2310 h = 1.0500 2 k y1 + 2 = 1.1155 2 f = 2.34255 k 3 = 0.234255 h = 1.1500 2 k y 2 + 1 = 1.3694 2 f = 3.14962 k 2 = 0.314962 h = 1.1500 2 k y 2 + 2 = 1.3911 2 f = 3.199716 k 3 = 0.319971 h = 1.2500 2 k y 3 + 1 = 1.7390 2 f = 4.34756 k 2 = 0.434756 h = 1.2500 2 k y 3 + 2 = 1.7701 2 f = 4.42519 k 3 = 0.44252 k1 x1 = 1.0000 1 k h k 2 = hf x n + , y n + 1 2 2 x1 + x2 + x3 + x1 + x2 + x3 + k h k 3 = hf x n + , y n + 2 2 2 k 4 = hf ( x n + h, y n + k 3 ) k4 k prom x1 + h = 1.1000 y1 + k 3 = 1.2342 f = 2.715361 k 4 = 0.271536 k prom = 0.233674 x 2 + h = 1.2000 y 2 + k 3 = 1.5537 f = 3.7288 k 4 = 0.37288 k prom = 0.319024 x3 + h = 1.3000 y 3 + k 3 = 1.99522 f = 5.187572 k 4 = 0.51876 k prom = 0.440994