Está en la página 1de 12

Chapter 9 Soluci on num erica de ecuaciones diferenciales ordinarias

Uno de los tipos de modelos matem aticos m as b asicos y m as importantes en la f sica son las ecuaciones diferenciales ordinarias. Recordemos que estas ecuaciones modelan la evoluci on en el tiempo de cantidades reales, dando su tasa de cambio como una funci on de sus valores actuales. Una ecuaci on diferencial ordinaria en una variable se ve como dx =x = f ( x). (9.1) dt En m as detalle, se podr a escribir x (t) = f ( x(t), t), (9.2) para entfatizar que el valor de la derivada en el tiempo t depende del valor de la funci on x(t) en el mismo instante. Va acompa nada por una condici on inicial x(t = 0) = x0 , que especica el valor inicial de la cantidad. La soluci on es una funci on x(t) en el tiempo, es decir x : R R. con x(t = 0) = x0 . Si hay mas de una variable, entonces tenemos un sistema de ecuaciones x 1 = f1 ( x1 , . . . , xn ) . . . x n = fn ( x1 , . . . , xn ) bien, en notaci o on vectorial, = f (x), x (9.4) donde x(t) = ( x1 (t), . . . , xn (t)) Rn y f = ( f1 , . . . , fn ) : Rn Rn . (Cada fi es una funci on n fi : R R.) En los cursos de ecuaciones diferenciales, se estudia c omo resolver estas ecuaciones de forma exacta, pero la mayor a de ecuaciones diferenciales ordinarias no tienen soluci on anal tica. Por lo 79

(9.3)

80

CHAPTER 9. ECUACIONES DIFERENCIALES ORDINARIAS

tanto, para entender y estudiar el comportamiento de estas ecuaciones las resolvemos de manera num erica. Para hacerlo, hay que aproximar la soluci on. Dado que es una funci on x(t) que tiene un n umero de datos innitos, aproximamos la soluci on con una secuencia de puntos xn en el tiempo, espaciados por un peque no incremento.

9.1

M etodo de Euler

El m etodo de Euler se puede considerar como el m etodo m as sencillo para resolver las ecuaciones diferenciales de manera num erica. Rara vez se emplea en la pr actica, ya que no suele ser muy preciso, pero la simplicidad de su derivaci on sirve para ejemplicar las t ecnicas con que se desarrollan lgebra tan engorrosa que algunos de los m etodos m as avanzados, sin tener que tomar en cuentael a acompa na tales desarrollos. El objetivo de este m etodo es encontrar una aproximaci on de un problema de valor inicial, es decir encontrar la funci on y(t) que satisface la ecuaci on diferencial dx = f ( x, t), dt con condici on inicial x(t = 0) = x0 . Para hacerlo, pensamos en lo siguiente. Si ya conocemos la soluci on x en el tiempo t, es decir x(t), entonces cu anto es x(t + t) un peque no tiempo despu es? Usando la serie de Taylor, obtenemos que x(t + t) = x(t) + t d2 x 1 d3 x dx 1 + (t)2 2 + (t)3 3 + . dt 2 dt 6 dt (9.6) (9.5)

Si truncamos esta expansi on en el primer t ermino no trivial, obtenemos x(t + t) = x(t) + t dx + O (t)2 . dt dx = f ( x(t)), y por lo tanto dt (9.8) (9.7)

Pero dado que x satisface la ecuaci on diferencial, tenemos que x(t + t) x(t) + t. f (t, x).

As que podemos ir creando una secuencia de valores de x en distintos momentos: x0 x1 = x0 + t. f ( x0 ) x2 = x1 + t. f ( x1 ) . . . (9.9) (9.10) (9.11) (9.12)

9.1. METODO DE EULER

81

Aqu , las xi son las soluciones aproximadas. As vamos avanzando en el tiempo hasta llegar a alg un tiempo nal t f . El resultado es una serie de pedacitos de recta que dan una aproximaci on a la soluci on real de la ecuaci on. Supongamos que queremos resolver la ecuaci on diferencial en un intervalo a t b, con condici on inicial y(t = a) = . Como ya se mencion o, no obtendremos una aproximaci on continua a la soluci on y(t), sino que se generar a de forma discreta. A estos puntos que se forman se les llama puntos de red, en el intervalo [a, b]. Ya obtenidos los puntos, se podr a obtener por interpolaci on la soluci on aproximada en otros puntos del intervalo. Supondremos que los puntos de red tienen una distribuci on uniforme en todo el intervalo [a, b]. Garantizamos esta condici on al seleccionar un entero positivo N y los puntos de red tal que: ti = a + ih i = 0, 1, 2, . . . , N. La distancia entre los puntos h, es decir, el tama no del paso t, es: h= ba . N (9.15) (9.13) (9.14)

9.1.1

Decaimiento radiactivo

Para ejemplicar la secci on anterior, consideremos el caso del decaimiento radioactivo. Se sabe que muchos n ucleos son inestables. Un caso t pico es el isotopo U235 del uranio, cuyo n ucleo tiene 92 protones y 143 neutrones. Tiene una probabilidad peque na, pero no insignicante, de decaer en dos n ucleos de la mitad del tama no, o en una combinaci on de part culas como protones, neutrones, electrones y part culas alfa. Este proceso de decaimiento es aleatorio. No podemos predecir el momento exacto en el que el decaimiento se llevar a a cabo. Lo mejor que podemos hacer es dar la probabilidad de decaimiento. Una manera equivalente para describir el proceso ser a dar la tasa promedio del tiempo del decaimiento. Para el U235 , el tiempo de vida promedio es aproximadamente 1 109 a nos. Imaginemos que se tiene un gran n umero N0 de n ucleos U235 , que ser a el caso de hacer un experimento para estudiar el decaimiento radiactivo. Siendo N (t) el n umero de n ucleos de uranio que subsisten hasta el tiempo t, entonces el comportamiento obedece a la ecuaci on dN (t) N (t) = , dt (9.16)

donde en una constante de tiempo para el decaimiento. Se puede demostrar f acilmente que la soluci on anal tica es N (t) = N0 et/ . (9.17) A un si en este problema conocemos la soluci on anal tica, en la gran mayor a de casos, no hay soluci on anal tica, y por lo tanto hay que recurrir a una soluci on num erica.

82 Soluci on num erica

CHAPTER 9. ECUACIONES DIFERENCIALES ORDINARIAS

Queremos obtener N (t) como funci on del tiempo t. Regresemos al desarrollo en serie de Taylor: N (t) = N (0) + donde las derivadas se eval uan en t = 0. Si t << 1, entonces se puede tomar como una buena aproximaci on hasta los t erminos lineales en t, por lo cual se tiene dN N (t) N (0) + t. (9.19) dt El mismo resultado puede obtenerse al evaluar la derivada de N en el tiempo t: (t) = lim N (t + t) N (t) N (t + t) N (t) , N t0 t t y por lo tanto N (t + t) N (t) + dN t. dt (9.21) (9.20) d2 N dN t + 2 (t)2 + , dt dt (9.18)

Es importante reconocer que se est a trabajando con puras aproximaciones. Los t erminos de error que se han dejado a un lado son mayores o iguales a los de segundo orden (t)2 . Haciendo t muy peque no, se puede esperar que los t erminos de error sean despreciables. Lo anterior se hizo para un caso general. Por lo que queda retomar el problema del decaimiento radiactivo de U235 . La ecuaci on discretizada en este caso reviene a: N (t + t) = N (t) N (t) t (9.22)

Conociendo el valor de N en el tiempo t, se puede estimar el valor en un tiempo t + t posterior. tomos iniciales, por lo que el problema ya puede ser Digamos que se conoce el n umero de a resuelta num ericamente. Sea N0 = 100. Utilizando las ecuaciones y evaluando con t = 0.01 y = 1, obtenemos N (0) = 100 N (1) = N (0) N (0) (0.01) = 99 1 N (1) N (2) = N (1) (0.01) = 98.01 1 N (2) (0.01) = 97.0299, N (3) = N (2) 1 (9.23) (9.24) (9.25) (9.26) (9.27) donde N (n) es el valor en el tiempo n t.

9.1. METODO DE EULER


C odigo para el m etodo de Euler La implementaci on de este algoritmo en Python se podr a hacer como sigue: def f(N): return -N/tau N0=int(raw_input(Da el numero inicial de nucleos: \t)) tau=float(raw_input(Da la constante temporal: \t)) dt=float(raw_input(Da el paso del tiempo: \t)) T=int(raw_input(Cuantos pasos daras: \t)) N=N0 t=0.0 for i in range(1,T): N += f(N)*dt t += dt print t,N Ejercicio. (i) Resu elvase la ecuaci on diferencial de primer orden y = y t2 + 1,

83

(9.28)

con la condici on inicial y0 = 0.5 y para 0 t 2, investigando el efecto de tomar pasos de distintos tama nos. (ii) Para interpretar geom etricamente el m etodo de Euler, modica el programa anterior para guardar en un archivo tipo .dat los resultados del c alculo num erico. Compara de manera gr aca 2 t la soluci on num erica y la soluci on anal tica, que es y = (t + 1) 0.5e .

9.1.2

Movimiento de proyectil

El m etodo de Euler tambi en se puede aplicar para resolver sistemas de ecuaciones diferenciales. n. Si ignoramos la Por ejemplo, consideremos un proyectil esf erico hueco lanzado desde un ca no resistencia del aire, entonces las ecuaciones de movimiento en dos dimensiones son d2 x =0 dt d2 y = g dt (9.29) (9.30)

Sabemos que podemos reducir una ecuaci on de segundo grado a dos ecuaciones acopladas de primer grado al introducir una nueva variable v x := x . As , quedamos con las siguientes ecuaciones

84

CHAPTER 9. ECUACIONES DIFERENCIALES ORDINARIAS

acopladas de primer orden para x: dx = vx dt dv x =0 dt y para y: dy = vy dt dvy = g. dt (9.33) (9.34) (9.31) (9.32)

Aplicando el mismo tipo de desarrollo en serie de Taylor como en la secci on anterior, vemos que el m etodo de Euler ahora se reduce a: dx t, dt dv x t, v x (t + t) v x (t) + dt x(t + t) x(t) + y por lo tanto x(t + t) = x(t) + v x t dv x v x (t + t) = v x (t) + t. dt Finalmente, llegamos a las cuatro ecuaciones de Euler siguientes: x(t + t) = x(t) + v x (t) t v x (t + t) = v x (t) y(t + t) = y(t) + vy (t) t vy (t + t) = vy (t) g t. Animaci on con Vpython Aplicando el m etodo de Euler, podemos visualizar # Programa de tiro parabolico usando vectores de la libreria de visual from visual import * # lo siguiente es opcional escena = display() (9.39) (9.40) (9.41) (9.42) (9.37) (9.38) (9.35) (9.36)

9.1. METODO DE EULER

85

escena.title = "Movimiento parabolico" escena.range = (50,50,40) escene.userspin = 1 # el userspin permite mover la camara mientras el movimiento se lleva a cabo piso = box(length=50, width=50, color=color.green) # Bola 1 -- posicion, velocidad y aceleracion usando vectores: x = vector(-37, 20, 0) v = vector(10, 20, 0) g = vector(0, -9.81, 0) esfera = sphere(pos=x, color=color.red) # crea esfera en visual # Bola 2: x2 = x v2 = v a2 = a esfera2 = sphere(pos=x2, color=color.blue) dt = 0.1 # paso de tiempo

# Ciclo principal: while esfera.y > 0.9 or esfera2.y > 0.9: rate(20) # dx y dv son vectores que representan los cambios en estas variables dx = v*dt dv = g*dt x += dx v = v+dv # tambien se puede utilizar += con los vectores: dx2 = v2*dt a2 = g - 0.01*v2 dv2 = a2*dt x2 += dx2 v2 += dv2 esfera.pos = x esfera2.pos = x2 # actualizar posiciones de esferas # con friccion

86

CHAPTER 9. ECUACIONES DIFERENCIALES ORDINARIAS

La ventaja de usar vectores en Python es que no es necesario descomponer las velocidades y 6 ecuaciones, s las fuerzas en sus componentes. Por lo tanto, en lugar de tener 4 o olo tenemos 1, lo cual simplica mucho el c odigo.

9.2

M etodos m as desarrollados de Ecuaciones diferenciales

Hemos visto que el m etodo de Euler no es muy bueno. C omo podemos mejorarlo? Euler usa la derivada del punto inicial para estimar la nueva posici on, pero no es muy sim etrico. M as sim etrico ser a usar la derivada a la mitad del intervalo: Se ve que eso deber a de dar una mejor estimaci on.

Runge Kutta Euler

Figure 9.1: Diferencia entre los m etodos al aproximar una funci on con Euler y con el m etodo del punto medio. Sin embargo, no sabemos c omo conseguir la derivada a la mitad del intervalo. Para eso es necesario recurrir al m etodo de RungeKutta.

9.2.1

M etodo de RungeKutta

Queremos resolver la siguiente ecuaci on diferencial: dy = f (t, y), dt con la condici on inicial y(t0 ) = y0 . Desarrollando una vez m as en serie de Taylor, queda : y(ti+1 ) = y(ti ) + (ti+1 ti ) y (ti ) + Sustituyendo h = (ti+1 ti ), tenemos: h (ti ) + . y(ti+1 ) = y(ti ) + h y (ti ) + y 2 (9.45) (ti+1 ti )2 y (ti ) + . 2 (9.44) (9.43)

DESARROLLADOS DE ECUACIONES DIFERENCIALES 9.2. METODOS MAS


h y (ti ) + , que es un polinomio de grado n, tal que Denotemos T (n) := y (t i ) + 2

87

T (1) = y (ti ) = f (ti , yi ) h h T (2) = y (ti ) + y (ti ) = f (ti , yi ) + f(ti , yi ) 2 2 . . . Desarrollando f(ti , yi ) nos lleva a f f yi f f d ( t i , yi ) + (ti , yi ) ( t i , yi ) = + . f, f(ti , yi ) = f (ti , yi ) = dt t y t t y donde todas las derivadas parciales se eval uan igualmente en (ti , yi ). Sustituyendo 9.48 en 9.47, se tiene que T (2) queda como T (2) = f (ti , yi ) + f h f ( t i , yi ) + (ti , yi ). f (ti , yi ) . 2 t y

(9.46) (9.47)

(9.48)

(9.49)

Supongamos que la condici on inicial est a dada altiempo ti . Entonces se puede evaluar la pendiente y en (ti , yi ). A esta pendiente la llamamos k1 , lo cual est a dada por k1 := f (ti , yi ). Ahora consideremos c omo evaluar la pendiente en otro punto, (tk , yk ), en un tiempo tk = ti + p1 h, donde h es el tama no del paso y p1 es una cantidad que impondremos despu es. As que yk = yi + q11 f (ti , yi ) h, para alg un q11 , y por lo tanto tenemos que yk = yi + q11 k1 h. Ahora la pendiente en el punto nuevo (tk , yk ) se puede aproximar con k2 := f (tk , yk ) = f (ti + p1 h, yi + q11 k1 h). (9.50)

Tenemos que determinar p1 y q11 . Para hacerlo, expandamos k2 en serie de Taylor y trunquemoslo al orden lineal: k2 f (ti , yi ) + p1 h f y f + q11 h t y t f f y = f (ti , yi ) + h p1 + q11 . t y t (9.51) (9.52)

Comparando las expresiones para k2 y T (2) , vemos que para que est en de acuerdo hasta orden cuadr atico, requerimos que p1 = 1 2 1 . q11 = 2 (9.53) (9.54)

88

CHAPTER 9. ECUACIONES DIFERENCIALES ORDINARIAS


Por lo tanto, el m etodo de RungeKutta de segundo orden queda como sigue: k1 = f (ti , yi ) h k2 = f (ti + h ,y + 2 k1 ) 2 i yi+1 = yi + h k2 . (9.55) (9.56) (9.57)

Aqu , yi+1 = y(ti + h) es el valor en el siguiente paso de tiempo. El m etodo se llama de segundo orden, debido que el error en cada paso es O(h3 ), y por lo tanto el error global en un intervalo con 1/h pasos queda como O(h2 ). Dado que estima la pendiente en el centro del intervalo, tambi en se llama el m etodo del punto medio.

M etodo modicado de Euler Otro m etodo que tambi en es de orden 2 es el m etodo modicado de Euler. Para derivarlo, se utiliza h h yi+1 = yi + 2 k1 + 2 k2 , en lugar de yi+1 = yi + k2 h en el m etodo del punto medio. Este m etodo tambi en se puede derivar al considerar la relaci on inetgral exacta
ti +h t i +h

y(ti + h) y(ti ) =

y ( s) d s =
s=ti s=ti

f ( s, y( s)) d s,

(9.58)

ltima integral con la regla del trapezio. y aproximando la u

9.2.2

M etodo de Runge-Kutta de orden cuatro

Para derivar m etodos de orden superior es decir, con errores en cada paso que decrecen m as r apidamente con el tama no del paso h es necesario complicar el an alisis anterior para tomar en cuenta todos los t erminos de la expansi on en serie de Taylor hasta cierta orden. Aqu simplemente daremos el resultado para el caso m as conocido, el del m etodo de Runge Kutta de orden 4: de hacemos k1 k2 k3 k4 yi+1 = f (ti , yi ) h = f (ti + 2 , yi + h k) 2 1 h h = f (ti + 2 , yi + 2 k2 ) = f (ti + h, yi + hk3 ) h = yi + 6 (k1 + 2k2 + 2k3 + k4 ). (9.59) (9.60) (9.61) (9.62) (9.63)

Se puede ver que este m etodo es una versi on m as complicada del m etodo de orden 2: ahora evaluamos la derivada cuatro veces en lugares distintos del intervalo. Al tomar una suma ponderada de ellos, obtenemos Para m as informaci on, recomendamos los libros de Burden y Faires, de Press et al., y de Hairer: Solving ordinary dierential equations I: Nonsti problems.

NUMERICA 9.3. DIFERENCIACION

89

X -3 X -2 X -1 X0

X1

X2

X3

Figure 9.2: Cuadratura num erica

9.3

Diferenciaci on num erica

Ya hemos visto la necesidad de aproximar derivadas en la soluci on num erica de ecuaciones diferenciales. Aqu veremos como diferenciar num ericamente una funci on si la conocemos solamente en ciertos puntos o si es muy costoso calcular su derivada de manera num erica. Supongamos que queremos calcular la derivada f ( x = 0) de una funci on f ( x) en x = 0, conociendo los valores de la funci on misma en puntos cercanos: fn = f ( xn ) xn = nh, (9.64) (9.65)

n = 0, 1, 2

Si expandimos f ( x) en serie de Taylor alrededor del cero obtenemos,


1 2 x f (0) + f ( x) = f (0) + x f (0) + 2 1 3 x f (0) 3!

+ .

(9.66)

Sustituyendo los xn , tenemos f1 = f ( x = h) = f0 h f + 1 h2 f 1 h3 f + O(h4 ) 2 6 f2 = f ( x = 2h) = f0 2h f + 2h f


2 4 3 h f 3

(9.67)
4

+ O(h )

(9.68)

La manera m as sencilla de obtener f es haciendo una aproximaci on de primer orden (siempre y cuando la aproximaci on lineal sea lo sucientemente buena), f = f1 f0 + O(h). h (9.69)

90

CHAPTER 9. ECUACIONES DIFERENCIALES ORDINARIAS

Esto se llama la aproximaci on de dos puntos, dado que utiliza informaci on sobre la funci on f en nada m as dos lugares. Podemos mejorar esta aproximaci on si usamos f1 y f1 de manera que el t ermino h2 f se cancele: 2h3 f + O(h4 ), (9.70) f1 f1 = 2h f + 6 lo cual implica que f = f1 f1 h2 f 1 f 1 f + O(h3 ) = + O(h2 ). 2h 6 2h (9.71)

La f ormula (9.71) ser a exacta si los t erminos en la expansi on de f1 y f1 de orden mayor a h2 fueran todos exactamente cero, es decir, si f fuera un polinomio de grado 2 (cuadr atico). Por lo tanto, esta expresi on se puede aproximar por una cuadr atica en el intervalo [h, h]. De manera similar, se pueden encontrar aproximaciones de derivadas superiores al suprimir los t erminos de orden m as baja: f1 + f1 = 2 f0 + h2 f , (9.72) donde el t ermino de orden una se cancela, y por lo tanto derivamos una aproximaci on de la derivada de orden 2: f1 2 f0 + f1 + O(h2 ). (9.73) f 2 h Esta aproximaci on se llama la f ormula de 3 puntos, dado que utiliza informaci on sobre f en tres lugares distintos para derivar la aproximaci on. Ejercicio. Investigar qu e tan buenos son estas aproximaciones para distintas h con una funci on para la cual se puede evaluar exactamente su derivada.

9.4

Cuadratura num erica


b

El t ermino cuadratura se reere a la resoluci on de integrales del tipo a f ( x)dx de manera num erica. Es importante realizar m etodos de resoluci on para dichas integrales ya que se dan todo el tiempo en la f sica. Por ejemplo, la probabilidad de que una variable gaussiana tenga un valor entre y es 1 2 2 1 2 1 2 2 x e e x dx dx = (9.74) 2 0 Esta integral no se puede evaluar exactamente en t erminos de funciones est andares, sino que se dene una nueva funci on erf (funci on del error o error function) que justamente se tiene que evaluar num ericamente. Consideremos Entonces
b a

f ( x)dx. Como primer paso, dividimos [a, b] en intervalos de longitud 2h.


b a+2h a+4h b

f =
a a

f+
a+2h

f + ... +
b2h

(9.75)

También podría gustarte