Anda di halaman 1dari 7

Metodos EDO - Entrega computacional 1

Eduardo Lucas Marn


16 de octubre de 2016

Consideremos la siguiente ecuaci


on diferencial
(
y 0 (t) = t2 ay(t)
y(0) = y0

(1)

que tiene por soluci


on exacta (esta solucion se puede hallar usando, por ejemplo, el metodo de
variacion del par
ametro) la siguiente funci
on
a2 t2 2at + 2
2
+ (y0 3 eat )
3
a
a
El ejercicio consiste en aproximar la solucion de la ecuacion en el intervalo [0, 3] mediante dos metodos:
Euler explcito y Runge-Kutta cl
asico de orden 4, para los valores del parametro de a = 50 y de la
condicion inicial de y0 = 1.
y(t) =

Apartado (a)
Para comenzar, nos piden estimar computacionalmente el valor del salto h necesario para que las
soluciones que nos proporciona cada uno de los dos metodos se comporten cualitativamente como lo hace
la verdadera soluci
on. Para ello lo primero que hacemos es graficar la solucion exacta, que conocemos y
que vale
502 t2 100t + 2
2
+ (1 3 e50t )
3
50
50
Tras esto iremos variando para cada metodo el valor del parametro h hasta que la solucion se comporte
de manera similar. Veamos pues la gr
afica de la solucion exacta de la ecuacion
y(t) =

Ahora, vamos a comenzar por ejemplo con un valor de N = 5 puntos de la particion del intervalo
T
[0, 3], que por tanto genera un salto de h = N
= 35 y vamos a ir disminuyendolo sucesivamente viendo las
graficas que vamos obteniendo en cada momento con ambos metodos. Pararemos cuando las soluciones
obtenidas sean cualitativamente similares a la solucion exacta de la imagen superior. Podemos anticipar
o conjeturar que, debido al order inferior de convergencia del metodo de Euler explcito, este requerir
a
un valor de h mucho menor para aproximar decentemente la solucion real, comparado con Runge-Kutta.
Vamos a ver si las simulaciones computacionales lo corroboran o no.
1

Metodos EDO - Entrega computacional 1

(a) Euler, N=5, h= 35 = 0,6

3
(b) Euler, N=10, h= 10
= 0,3

3
(c) Euler, N=20, h= 20
= 0,15

3
(d) Euler, N=40, h= 40
= 0,075

3
(a) Euler, N=80, h= 80
= 0,0375

3
(b) Euler, N=160, h= 160
= 0, 01875

3
(a) Euler, N=500, h= 500
= 0,006

3
(b) Euler, N=1000, h= 1000
= 0,003

Metodos EDO - Entrega computacional 1

El codigo se puede consultar en el fichero LucasMarinApartado(a)Euler.pyw. Podemos observar claramente como en los primeros 4 intentos, la aproximacion obtenida oscila de positivo a negativo, y su
modulo diverge a infinito, nada que ver con el verdadero comportamiento. Cuando llegamos a 80 puntos
en la particion, el comportamiento cambia, de nuevo se produce una oscilacion en el signo de la soluci
on,
pero ahora el modulo s parece asimilarse al verdadero modulo de la solucion exacta, no obstante, esa
oscilacion no nos sirve, necesitamos un mejor comportamiento de la solucion. En los u
ltimos casos, cuando superamos ampliamente los 100 puntos en la particion, aproximadamente cuando el salto es de una
centesima o inferior h 0,01, es cuando conseguimos una aproximacion del comportamiento cualitativo
de la solucion que es bastante fiel. Este es el valor que estabamos buscando.
Pasemos ahora a estudiar que ocurre cuando realizamos el mismo experimento pero empleando el
metodo de Runge-Kutta de orden 4 para aproximar la solucion de la ecuacion. El codigo correspondiente
se puede consultar en el fichero LucasMarinApartado(a)RK4.pyw.

(a) RK4, N=5, h= 35 = 0,6

3
(b) RK4, N=10, h= 10
= 0,3

3
= 0,15
(c) RK4, N=20, h= 20

3
= 0,075
(d) RK4, N=40, h= 40

Donde recordemos que este metodo viene definido por

k1 = f (tn , yn )

h
h

k2 = f (tn + 2 , yn + 2 k1 )
k3 = f (tn + h2 , yn + h2 k2 )

k4 = f (tn + h, yn + hk3 )

yn+1 = yn + h6 (k1 + 2k2 + 2k3 + k4 )


Podemos observar ahora como el valor de h requerido para obtener una aproximacion medianamente
fiel de la solucion exacta es mucho menos restrictivo, con un salto de h 0,05 se obtiene una imagen muy
leal a la realidad. Recordemos que antes necesitamos un valor del orden de h 0,01, la diferencia podra
haber sido incluso mayor. Tambien es interesante observar que en general el comportamiento cualitativo
de la solucion podramos decir que se aproxima incluso desde las primeras etapas, ya que a pesar de que
3

Metodos EDO - Entrega computacional 1

3
= 0,05
(a) RK4, N=60, h= 60

3
= 0, 0375
(b) RK4, N=80, h= 80

la grafica resultante con menos de 50 nodos en la particion diverge demasiado rapido a infinito, al menos
siempre resulta ser creciente, incluso cuando tenemos u
nicamente 5 nodos. Recordemos que con Euler,
se obtena un comportamiento muy distinto: El signo oscilaba y el modulo diverja primero, y luego el
signo oscilaba y el m
odulo converja, hasta que finalmente tanto el signo como el modulo converjan. En
este caso desde el principio el signo es el correcto, no hay oscilacion, aunque la divergencia del m
odulo
tambien ocurre en los primeros experimentos.
Para zanjar la cuesti
on, vamos a comparar cual es el valor de h mas grande que, con cada metodo,
podemos emplear para obtener una soluci
on que aproxime bien la solucion exacta.

3
(a) Euler, N=150, h= 150
= 0,02

3
(b) RK4, N=55, h= 55
= 0,054

Vemos que con Euler, necesitamos un salto de aproximadamente h = 0,02 para obtener una buena
aproximacion, un valor superior causa oscilacion, como se puede apreciar en la imagen correspondiente a
los 80 nodos con Euler de p
aginas anteriores (ocurre algo similar incluso con 140 nodos, sigue habiendo
oscilaciones solo que menores, pero esto sigue sin valernos pues no emula correctamente el comportamiento cualitativo de la soluci
on). Por otro lado, se observa que Runge-Kutta de orden 4 aproxima
decentemente la soluci
on y, en especial, su comportamiento cualitativo (que recordemos es lo que nos
pide el ejercicio) con s
olo 55 nodos, y un salto de h = 0,54, casi 3 veces mayor al salto requerido por Euler.
En lo que respecta a resultados te
oricos, si llamamos = hy f , sabemos que para que el metodo de
Euler explcito no amplifique los errores es necesario al menos exigir que se verifique
|1 + | 1
de donde se deduce
h < h =

2
2
2
1
= =
=
= 0,04
m
ax y f
a
50
25

3
Que se corresponde con un tama
no de particion de N = Th = 0,04
= 75 nodos. En efecto, en nuestro
caso hemos necesitado un tama
no de particion superior a ese. De hecho, nuestros experimientos son

Metodos EDO - Entrega computacional 1

sorprendentemente cercanos a este resultado, dado que los casos en los que h era superior a ese valor divergan rapidamente (primeras 4 im
agenes correspondientes a Euler explcito), mientras que en el quinto
experimento, cuando hemos tomado 80 nodos, con un tama
no de particion ligeramente inferior a este valor crtico de h = 0,04, se eliminaba la divergencia en modulo de la solucion aproximada, y esta converga
efectivamente a la soluci
on exacta, lo cual corrobora a la perfeccion estos calculos. Recordemos que en
nuestro caso se produca una oscilaci
on del signo de la solucion que se iba eliminando con el tiempo, no
obstante la soluci
on converja a la soluci
on exacta.
En lo que se refiere al metodo de Runge-Kutta-4, la condicion de estabilidad es ahora (esto se puede
consultar, por ejemplo, en [[2], p
ag. 60])
2 3 4
+
+ |1
2
6
24
En el recurso anterior podemos encontrar una grafica mostrando la region de estabilidad del metodo,
en el plano complejo (aunque en nuestro caso se trata de valores de la recta real)
|1 + +

Vemos que para tener estabilidad necesitamos un valor real de, aproximadamente, hy f = < 2,75,
T
3
y por tanto h < 2,75
50 = 0,055, aproximadamente. Este valor corresponde con N = h = 0,055 54,54, un
valor sorprendentemente cercano al n
umero de nodos que, efectivamente, hemos necesitado para obtener
un comportamiento cualitativo de la soluci
on similar a la solucion exacta, que recordemos, ha sido de 55
nodos. Al tiempo que escribo esto estoy francamente sorprendido.
Una vez comprobados te
oricamente los valores mayores del salto temporal h para poder obtener
estabilidad y un comportamiento cualitativo de la solucion aproximada similar al de la solucion exacta,
podemos terminar tranquilamente el apartado y pasar al siguiente.

Metodos EDO - Entrega computacional 1

Apartado (b)
Para comparar ambos metodos y la rapidez de su convergencia a la solucion exacta, el ejercicio nos
pide ahora que grafiquemos los errores que se producen para cada valor de h entre la solucion y la
aproximacion, simult
aneamente con los dos metodos. Lo que podemos conjeturar, en vista del ejercicio
anterior, sera que la gr
afica correspondiente al metodo de Runge-Kutta de orden 4 decaiga mucho m
as
rapido a 0 que la grafica correspondiente al metodo de Euler explcito. La grafica ademas nos permitir
a
comprobar cuanto m
as r
apido converje el uno con respecto del otro.
Para realizar este ejercicio, que se puede consultar en el fichero LucasMarinApartado(b).pyw, vamos a
realizar la aproximaci
on con sendos metodos numericos sucesivamente para varios valores de N , es decir,
cada vez para una mayor finura de la particion del intervalo [0, 3]. En cada caso calcularemos el error
absoluto maximo, esto es, en la norma infinito. A fin de almacenar estos datos crearemos 3 vectores,
uno para contener la cantidad de puntos de la particion en cada resolucion, otro para contener el error
maximo de Euler en cada resoluci
on, y otro analogo para Runge-Kutta-4.
Para terminar, representamos gr
aficamente los vectores resultantes. Es importante notar que he decidido comenzar con 80 nodos e ir tomando sucesivos multiplos del mismo, ya que con tales nodos ambos
metodos producan un error razonable, ya no haba divergencia. He optado por implementar dos metodos
para comparar los errores, primero uno lineal y luego otro en escala logartmica, debido a que naturalmente la diferencia de velocidad de convergencia es demasiado rapida como para poder ser apreciada en
una escala lineal.
Pasemos a ver las gr
aficas resultantes. Aqu podemos ver dos imagenes correspondientes a la escala
lineal, en la segunda imagen he prescindido de los primeros 5 pasos pero el resto es igual, con lo cual
es, esencialmente, como un zoom a la primera grafica, para poder apreciar mejor el error del metodo
de Euler. Es inmediato observar que el error producido por el metodo de Runge-Kutta es demasiado
peque
no como para poder ser apreciado junto al de Euler explcito.

(a) Comparativa errores, escala lineal

(b) Comparativa errores, escala lineal (zoom)

Por otro lado, en la escala logartmica (neperiana) podemos apreciar claramente el order superior de
convergencia del metodo cl
asico de Runge-Kutta de orden 4, que de hecho es tan grande que antes de
terminar la simulaci
on, el error alcanza el 0 de la maquina y se mantiene constante en el, sin duda todo
un logro.

Metodos EDO - Entrega computacional 1

Apartado (c)
Para terminar, el tercer apartado nos pide comparar los ordenes de convergencia de sendos metodos
haciendo la grafica de las rectas de pendiente simultaneamente. Podemos sin duda reciclar gran parte del
codigo del apartado anterior, en concreto, bastara realizar un graficado en escala logartmica a
nadiendo
ademas unas rectas gua con la pendiente que sabemos teoricamente tiene cada metodo: 1 para Euler
explcito y 4 para Runge-Kutta-4. Observando que las rectas son (practicamente) paralelas a sus correspondientes guas, habremos comprobado satisfactoriamente el orden de convergencia de sendos metodos.
Dicho pues, tomamos el c
odido del apartado anterior y realizamos una peque
na modificacion al final
para incluir las rectas gua. Este c
odigo se puede consultar en el fichero LucasMarinApartado(c).pyw, y
la grafica comparativa resultante, que ademas muestra los ordenes de convergencia, es la siguiente:

Tras observar las gr


aficas, efectivamente las rectas gua son paralelas a los correspondientes grafos de
los errores respectivos de cada metodo. Tengamos en cuenta que la recta verde, correspondiente al error
de Runge-Kutta, se hace 0 y por eso a partir de tal punto se vuelve horizontal. En conclusion, de esta
manera quedamos m
as seguros de que los resultados teoricos concernientes a ordenes de convergencia
vistos en clase parecen verificarse sin problemas, hemos corroborado computacionalmente su veracidad.
Con esto, terminamos el ejercicio y la entrega.

Bibliografa
[1] Apuntes de la asignatura
[2] http://homepages.cwi.nl/ jason/Classes/numwisk/ch10.pdf

Anda mungkin juga menyukai