Вы находитесь на странице: 1из 5

PRACTICAS DE ECUACIONES DIFERENCIALES. 2a - EULER Y RUNGE-KUTTA.

En esta pr actica, como en la anterior, vamos a tratar ecuaciones diferenciales de primer orden, que pueden ponerse de la forma y = f (x, y ), con la derivada de la funci on inc ognita, y (x), despejada. Se han visto, en las clases de teor a, algunos m etodos para hallar la soluci on simb olicamente, con c alculos manuales. Tambi en hemos visto que MATLAB tiene la instrucci on dsolve para la soluci on simb olica. Sin embargo lo que m as se usa en la pr actica no es la soluci on simb olica (ni a mano ni con MATLAB) sino la soluci on num erica (mediante tablas manuales o con MATLAB). Vamos a ver dos m etodos num ericos: Euler y Runge-Kutta. Una ecuaci on diferencial de primer orden con valor inicial es un problema que tiene de dato: y = f (x, y ), y (x0 ) = y0 donde x0 e y0 son n umeros concretos, y f (x, y ) una funci on concreta de dos variables. El problema tiene de soluci on la funci on desconocida y (x) de una variable. Por ejemplo tres problemas distintos de ecuaci on diferencial con valor inicial son: a) f (x, y ) = y, x0 = 0, y0 = 1 b) f (x, y ) = 1 + y 2 , x0 = 0, y0 = 0 c) f (x, y ) = 1 2xy, x0 = 0, y0 = 0 Tarea 1: Hallar simb olicamente (manualmente o por software) las soluciones de los anteriores ejemplos. Son funciones conocidas en los tres casos? [Se pueden usar otras herramientas de integraci on, como WolframAlpha o el Asistente Matem atico en la Web]
1

PRACTICA 2A

En contraste con esta soluci on simb olica, que es exacta, la soluci on num erica es solo una aproximaci on, pero siempre es posible calcularla. 1. todo de Euler Me

El matem atico suizo del siglo XVIII Leonhard Euler aproximaba la funci on soluci on y (x) mediante una tabla de valores: x x0 x1 xn y (x) y0 y1 yn Los valores x0 e y0 son el valor inicial del dato. Los valores x1 , x2 , . . . se hallan a partir de x0 sumando un peque no valor h, llamado paso. As : x1 = x0 + h, x2 = x0 + 2h, . . . , xi = x0 + ih, . . . Los valores y1 , y2 , . . . se hallan aproximando la funci on desconocida y (x) mediante su recta tangente, que s es conocida. Esto se hace en un bucle empezando por el punto inicial (x0 , y0 ), donde la curva tiene de pendiente f (x0 , y0 ), y por tanto la tangente va a pasar sobre x1 con abcisa de valor: y1 = y0 + hf (x0 , y0 ) La tangente, y el valor y1 , pueden verse en la gura 1. Para hallar y2 se hace de modo parecido: a partir del punto (x1 , y1 ), se traza la tangente, que pasa sobre x2 con altura y2 dada por: y2 = y1 + hf (x1 , y1 ) Y as sucesivamente se hallan los restantes valores y3 , y4 , . . . , yn . En la gura 1 solo se muestran los dos primeros. En general la curva soluci on, desconocida, se aproxima con la poligonal de v ertices (xi , yi ). La f ormula es: yi = yi1 + hf (xi1 , yi1 ), para i = 1, . . . , n En el primer punto (x0 , y0 ) coinciden la soluci on exacta y la aproximaci on, pero luego se ve que se va alejando cada vez m as.

PRACTICA 2a

Figura 1. Las dos primeras iteraciones del m etodo de Euler (de aqu ).

Tarea 2: (Resoluci on por Euler) Para cada uno de los tres casos de la tarea anterior, hacer una funci on de MATLAB que aproxime su soluci on por Euler. Las funciones se llamaran eulera, eulerb y eulerc, cada una en su chero-m correspondiente. Cada funci on tiene, de entrada, el paso h, el valor inicial x0 e y0 , y el valor nal xn . Cada funci on tiene, de salida, la tabla xi , yi . En la notaci on de MATLAB: [valoresx,valoresy]=euler*(x0,y0,xfinal,h) donde valoresx es un array que tiene los valores xi , y valoresy los yi . Con respecto a la entrada, x0 e y0 son los n umeros correspondientes a los valores iniciales x0 e y0 . El par ametro h corresponde al paso h. (El asterisco en el nombre euler* quiere decir que acaba en la letra a, b o c que corresponda, claro est a).

PRACTICA 2A

Esta es la especicaci on de la funci on. El chero euler*.m de la funci on sigue el siguiente esquema: function [valoresx,valoresy]=euler*(x0,y0,xfinal,h) % Primero, en el array valoresx se ponen los valores desde x0 hasta xfinal con incremento h ... % Segundo, en el array valoresy, en primera posici on, se pone y0 ... for i=2:la longitud que haya salido valoresx % Tercero, se aplica la f ormula de Euler yi = yi1 +hf (xi1 , yi1 ); end % Finalmente, retornar valoresx y valoresy Tarea 3: Para cada apartado, representar gr acamente, en la misma gr aca, la funci on soluci on (si es posible) y las aproximaciones obtenidas para varios valores del paso h. (Utilizar de valor xfinal el que mejor se adapte a cada caso: por ejemplo xfinal=0,5 es demasiado poco y xfinal=10 es demasiado grande.) Para qu e valor de h sale una mejor aproximaci on? Tarea 4: (Orden del error) El error de una aproximaci on es el m aximo de la diferencia entre la soluci on exacta y la soluci on aproximada. Qu e errores tienen las aproximaciones de la tarea anterior? Representa en una gr aca los pares (h, error). Qu e orden tiene el error con respecto a h? (orden 1 signica que esta gr aca es aproximadamente una recta, orden 2 una par abola, etc.)

2.

todos de Runge-Kutta Me

Los m etodos que usaban los matem aticos alemanes del XIX Carl Runge y Martin Kutta son similares al de Euler en que, mediante un bucle, se estima yi a partir de yi1 . Se diferencian en que en vez de seguir la recta tangente,

PRACTICA 2a

siguen la par abola, o la curva de grado tres, u otras curvas. Mientras m as complicada sea la curva, m as exacta es la aproximaci on, pero m as complicada es la ecuaci on de estimaci on. Por ejemplo el m etodo RK3 (Runge-Kutta de tercer orden) est a basado en la par abola, y su ecuaci on de estimaci on de yi+1 es: h yi+1 = yi + (k1 + 4k2 + k3 ) 6 donde k1 = f (xi , yi ) 1 1 k2 = f (xi + 2 h, yi + 2 hk1 ) k3 = f (xi + h, yi + h(2k2 k1 )) Tambi en hay m etodos de Runge-Kutta de otros ordenes: RK2, RK4,. . . etc. Mientras mayor sea el orden, m as complicada es la ecuaci on de estimaci on. Tarea 5: (Resoluci on por Runge-Kutta) Escoger al menos dos valores del orden n y buscar la f ormula de RKn correspondiente. Para cada uno de los tres casos de la tarea 1, hacer una funci on de MATLAB que aproxime su soluci on por RKn. Las funciones se llamaran RKna,RKnb y RKnc, cada una en su chero-m correspondiente. function [valoresx,valoresy]=RKn*(x0,y0,xfinal,h) % Primero, en el array valoresx los valores de xi ... % Segundo, en el array valoresy, en primera posici on, se pone y0 ... for i=2:la longitud que haya salido valoresx % Tercero, se aplica la f ormula de RKn end Tarea 6: (Orden del error) Representa en una gr aca algunos pares (h, error). Esta es la gr aca de error. Cada orden n tendr a su gr aca de error. Qu e orden tiene el error con respecto a h en cada n?

Вам также может понравиться