You are on page 1of 4

AN 131419 L10 EDO II

J. Rojas 1

1.

Soluci on Num erica de las EDO II: M etodos de Runge-Kutta

La desventaja principal de los m etodos de Euler es su limitada orden de aproximaci on. Los m etodos de RK se basan en calculos adicionales en los puntos intermedios en el calculo de yn+1 . Considerando la EDO lineal de primer orden dy = f (t, y ) dt con la condici on inicial y (t = 0) = y0 Teniendo en cuenta que,
tn+1

(1)

yn+1 = yn +
tn

f (t, y )dt

(2)

1.1.

M etodo de RK de segundo orden


tn+1

Se obtiene aplicando la regla trapezoidal al mimbro derecho de (2) f (t, y )dt


tn

h [f (tn , yn ) + f (tn+1 , yn +1 )] 2

(3)

yn +1 se estima primero mediante Euler hacia adelante yn +1 = yn + hf (tn , yn )

h yn+1 = yn + [f (tn , yn ) + f (tn+1 , yn +1 ] 2 o en forma convencional K1 = hf (tn , yn ) K2 = hf (tn+1 , yn + K1 ) 1 yn+1 = yn + (K1 + K2 ) + O[h3 ] 2 (4a) (4b) (4c)

1.2.

Runge-Kutta de cuarto orden


K1 = hf (tn , yn ) K2 = hf (tn + h/2, yn + K1 /2) K3 = hf (tn + h/2, yn + K2 /2) K4 = hf (tn + h, yn + K3 ) (5) (6) (7) (8) (9)

Finalmente

1 yn+1 = yn + [K1 + 2K2 + 2K3 + K4 ] 6 Ejemplos de aplicaci on.

AN 131419 L10 EDO II

J. Rojas 2

2.

Oscilador Arm onico

Ejemplo de aplicaci on del algoritmo de RK en la soluci on del comportamiento del oscilador arm onico simple. Tomando como modelo del oscilador arm onico simple un bloque que se mueve sobre una supercie plana liza, unida con un resorte jo en el otro extremo La ecuaci on diferencial que gobierna el movimiento, k d2 x 2 = x = 0 2 dt m Representamos como un sistema de dos ecuaciones de primer orden dx =v dt k dv = x dt m mas las condiciones x(t = 0) = x0 y v (t = 0) = v0 La ecuaci on del tipo tiene soluci on anal tica de la forma x(t) = A cos(0 t + 0 ) (13) (11) (12) (10)

es decir es una funci on peri odica con periodo T = 2/0 , la cual sirve para nes de comparaci on con la soluci on num erica. Adem as, se tiene otro criterio para controlar la estabilidad de la solucion num erica - la energ a total, la cual debe conservarse 1 1 E0 = mv 2 (t) + kx2 (t) 2 2 (14)

El algoritmo que implementa la soluci on de la EDO para oscilador arm onico mediante el m etodo de Runge-Kutta de segundo orden es como sigue: 1. Denir los valores iniciales de la posici on y velocidad. Se recomienda asumir como tiempo maximo de observaci on multiplo de 2 , ademas, sin perder generalidad se puede asumir k/m = 1. 2. Denir el paso de tiempo como h= tf t1 N

donde N es el n umero de puntos de la malla 3. Calcular la energ a total E0 , para usar como control 4. Implementar el algoritmo de RK de segundo orden tanto para la velocidad vn+1 como la coordenada xn+1 partiendo del valor anterior vn y xn 5. Incrementar el tiempo tn+1 = tn + h

AN 131419 L10 EDO II

J. Rojas 3

6. Repetir este procedimiento iterativo hasta alcanzar el tiempo maximo. 7. El resultado es chequeado con la soluci on exacta. Ejemplo de codigo en fortran 95 !************************************************** ! EDO del oscilador armonico mediante el metodo * ! de Runge-Kutta de segundo orden * !************************************************** PROGRAM oas IMPLICIT NONE REAL(8)::t,dt,tf,x,v,E open(unit=8,file=sho.dat,action=write) ! =========================================== CALL inicio(t,dt,tf,x,v) E= energia(x,v) DO WHILE (t<tf) print*,t,x,v write(8,40) t,x,v,E CALL RK2(dt,x,v) E=energia(x,v) t=t+dt END DO 40 format (4F10.4) close(8) CONTAINS SUBROUTINE inicio(t,dt,tf,x,v) REAL(8) ::x,v,t,dt,tf integer::N t=0.0d0 N=100 tf=2*3.1415d0 dt=tf/N x=0.5d0;v=0.0d0 END SUBROUTINE REAL FUNCTION energia(x,v) REAL(8)::x,v energia=0.5*(x**2+v**2) END FUNCTION SUBROUTINE RK2(dt,x,v) REAL(8)::dt,x,v REAL(8)::kx1,kv1,kx2,kv2 ! variables locales kx1=dt*v; kv1=dt*(-x) kx2=dt*(v+kx1) kv2=dt*(-(x+kv1))

AN 131419 L10 EDO II x=x+(kx1+kx2)/2 v=v+(kv1+kv2)/2 END SUBROUTINE END PROGRAM

J. Rojas 4

Ejemplo de corrida con los datos: A=0.5, t=0,tmax=2*pi, N=100, v0=0

Figura 1: Soluci on num erica y anal tica de la ecuaci on del oscilador arm onico mediante el m etodo de Runge-Kutta de segundo orden.

You might also like