Método de RKKF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Capı́tulo 3

Métodos de Runge-Kutta

En la sección anterior vimos los métodos de Taylor que tienen un error de truncamiento
de orden alto, pero tienen la desventaja de requerir el cálculo y evaluación de las derivadas
de f(x, y), este es un procedimiento lento y complicado motivo por el cual rara vez se
emplean. Los métodos de Runge Kutta tienen error de truncamiento alto, pero permiten
prescindir del c´alculo y evaluaci´on de las derivadas.
El primer paso para derivar el M´etodo de Runge-Kutta , es determinar los valores
a,b y c con la propiedad de que af(x + b, y + c) aproxima a para p = 2

h
T (2) (x, y) = f (x, y) + f ′ (x, y)
2
h ∂f h ∂f
T (2) (x, y) = f (x, y) + (x, y) + (x, y).f (x, y) (3.1)
2 ∂x 2 ∂y
Al desarrollar f (x + b, y + c) en su polinomio de Taylor grado uno alrededor de (x,y) se
obtiene
∂f ∂f
af (x + b, y + c) = af (x, y) + ab (x, y) + ac (x, y).f (x, y) + aR1 (x + b, y + c) (3.2)
∂x ∂y
donde
b2 ∂ 2 f ∂2f c2 ∂ 2 f
R1 (x + b, y + c) = (ǫ, µ) + bc (ǫ, µ) + (ǫ, µ)
2 ∂x2 ∂x∂y 2 ∂y 2
para ǫ entre x y x + b, µ entre y y y + c
h
Al igualar los coeficientes de las ecuaciones (3.1) y (3.2) obtenemos a = 1 b = 2
y

21
c = h2 f (x, y)
En consecuencia
µ ¶ µ ¶
(2) h h h h
T (x, y) = f x + , y + f (x, y) − R1 x + , y + f (x, y)
2 2 2 2
donde
h h h2 ∂ 2 f h2 ∂2f h2 2
2 ∂ f
R1 (x + , y + f (x, y)) = (ǫ, µ) + f (x, y) (ǫ, µ) + (f (x, y)) (ǫ, µ)
2 2 8 ∂x2 4 ∂x∂y 8 ∂y 2
El método que resulta de sustituir T (2) (x, y) por f x + h2 , y + h2 f (x, y) en el método de
¡ ¢

Taylor de orden dos es un método especı́fico de Runge-Kutta, conocido con el nombre de


Método del Punto medio

3.1. Método del punto medio

h h
yn+1 = yn + hf (xn + , yn + f (xn , yn )) (3.3)
2 2
n = 0, 1, 2, . . . (3.4)

Solo tres parámetros se encuentran en af (x+b, y +c) y los tres se requieren en la igualdad
con T (2) ,necesitamos una forma mas compleja para cumplir las condiciones que requiere
cualquiera de los métodos de Taylor de orden superior.
La forma más apropiada de cuatro parámetros con que se aproxima
h h2
T (3) (x, y) = f (x, y) + f ′ (x, y) + f ′′ (x, y)
2 6
es
af (x, y) + bf (x + c, y + df (x, y)) (3.5)
y ni siquiera con esto se tiene la suficiente flexibilidad para igualar el término
¸2
h2 ∂f
·
(x, y) f (x, y)
6 ∂y
h2 ′′
resultante de la expansión de f (x, y)
6

Por lo tanto, lo mejor que podemos lograr utilizando son métodos con el error local
de truncamiento O(h2 ), sin embargo el hecho que tenga cuatro parámetros, da cierta
flexibilidad en su elección para derivar varios métodos O(h2 ). Uno de los más importantes
1
es el método modificado de Euler, que corresponde a seleccionar a = b = 2
yc=d=h
y se representa de la siguiente forma.

22
3.2. Método Modificado de Euler

1
yn+1 = yn + h [f (xn , yn ) + f (xn + h, yn + hf (xn , yn ))] (3.6)
2
n = 0, 1, 2, . . .

Otro método importante O(h2 ) es el de Heun, que corresponde a a = 14 , b = 43 , c = d = 23 h.

3.3. Método de Heun

· ¸
1 2 2
yn+1 = yn + h f (xn , yn ) + 3f (xn + h, yn + hf (xn , yn )) (3.7)
4 3 3
n = 0, 1, 2, . . .

Ambos son métodos de Runge Kutta de orden dos, que es el orden de su error local de
truncamiento.
Aunque podemos aproximar T (3) (x, y) con el error O(h3 ) mediante una expresión de la
forma
f (x + a, y + df (x + b, y + cf (x, y)))
contiene cuatro parámetros, determinar los valores de a b c y d es complicada, de hecho
el método de Runge Kutta de orden tres que resulta de esta expresión no se emplea. El
método de Runge Kutta de mayor uso es el de cuarto orden

3.4. Método de Runge-Kutta de Cuarto Orden

1
yn+1 = yn + (k1 + 2k2 + 2k3 + k4 ) , n = 0, 1, 2, . . . (3.8)
6
donde

k1 = hf (xn , yn )
1 1
k2 = hf (xn + h, yn + k1 )
2 2
1 1
k3 = hf (xn + h, yn + k2 )
2 2
k4 = hf (xn + h, yn + k3 )

23
3.4.1. Algoritmo del Método de Runge-Kutta de Cuarto Orden
Este algoritmo calcula la solución del problema de valor inicial (1.1) en puntos
equidistantes x1 = x0 + h ,x2 = x0 + 2h, x3 = x0 + 3h, · · · , xN = x0 + N h, aquı́ f es
tal que (1.1) tiene una solución única en [x0 , xN ].

1. Entrada: Valores iniciales x0 , y0 , tamaño de paso h y número de pasos N

2. Para n=0,...,N-1, hacer

k1 = hf (xn , yn )
k2 = hf (xn + 12 h, yn + 21 k1 )
k3 = hf (xn + 12 h, yn + 21 k2 )
k4 = hf (xn + h, yn + k3 )
yn+1 = yn + 16 (k1 + 2k2 + 2k3 + k4 )
Salida xn+1 , yn+1

3. Parar

3.4.2. Programa del Método de Runge-Kutta de Cuarto Orden


function y=rungekutta(n,a,b,h)
format long
x=a:h:b;
y=zeros(n,1);
y(1)=0;
for k=1:n
k1=h*fe(x(k),y(k))
k2=h*fe(x(k)+0.5*h,y(k)+0.5*k1)
k3=h*fe(x(k)+0.5*h,y(k)+0.5*k2)
k4=h*fe(x(k)+h,y(k)+k3)
y(k+1)=y(k)+(1/6)*(k1+2*k2+2*k3+k4);
end

function y1=fe(x,y)
y1=x*exp(3*x)-2*y;

24
Ejemplo

1. Sea la ecuación diferencial y ′ = xe3x − 2y, y(0) = 0, cuya solución general es


1 1 3t 1 −2t
y(x) = 5
xe3t − 25
e + 25
e , usando el método de Runge-Kutta con h = 0.1,
aproximar y(1)
Solución
Utilizando el método de Runge-kutta se consigue los siguientes valores

Método
Valor exacto Runge-Kutta Error
xn y(xn ) yn |y(xn ) − yn |
1.0e-003 *
0.0 0 0 0
0.1 0.005752053971599 0.005754631311524 0.002577339924445
0.2 0.026812801841426 0.026818770596771 0.005968755345566
0.3 0.071144527666900 0.071155164515354 0.010636848453718
0.4 0.150777835474151 0.150795060680180 0.017225206029203
0.5 0.283616521867142 0.283643159044116 0.026637176974542
0.6 0.496019565629524 0.496059711486905 0.040145857380935
0.7 0.826480869814429 0.826540417642342 0.059547827913398
0.8 1.330857026396779 1.330944404473756 0.087378076976341
0.9 2.089774397011061 2.089901607341672 0.127210330611138
1.0 3.219099319039492 3.219283395463391 0.184076423899171
observamos que y(1) ≈ 3.219283395463391.

2. Sea la ecuacion diferencial y ′ = −y+x+2 con la condicion inicial y(0) = 2, usando


el método de Runge-Kutta de cuarto orden con h = 0.1, h = 0.05 y h = 0.01,
aproximar y(1).
Solución
Si usamos el método de Runge-Kutta, observemos que al reducir h se reduce el
error que se comete.

Aproximación Solución exacta Error


h a y(1) y(1) |y(1)-Aprox|
0.1 2.367879774412498 2.367879441171442 3.332410560830112e-007
0.05 2.367879461147540 2.367879441171442 1.997609810899803e-008
0.01 2.367879441202356 2.367879441171442 3.091393807608256e-011

25
Si comparamos con el método de Euler
xi Euler h=0.1 euler h=0.025 Runge kutta solución exacta
4to orden
0 2.000000000000000 2.000000000000000 2.0000000000000000 2.0000000000000000
0.1 2.000000000000000 2.003687890625000 2.0048374999999998 2.0048374180359598
0.2 2.010000000000000 2.016651803662262 2.0187309014062498 2.0187307530779819
0.3 2.029000000000000 2.037998345826651 2.0408184220011774 2.0408182206817180
0.4 2.056100000000000 2.066920168424825 2.0703202889174905 2.0703200460356395
0.5 2.090490000000000 2.102687680219100 2.1065309344233798 2.1065306597126332
0.6 2.131441000000000 2.144641558442873 2.1488119343763148 2.1488116360940266
0.7 2.178296900000000 2.192185981095952 2.1965856186712287 2.1965853037914096
0.8 2.230467210000001 2.244782511051797 2.2493292897344279 2.2493289641172218
0.9 2.287420489000001 2.301944569199290 2.3065699912000754 2.3065696597405991
1.0 2.348678440100001 2.363232439887880 2.3678797744124984 2.3678794411714423

De aqui se observa la superioridad del método de Runge Kutta de cuarto orden,


pues con h = 0.025 método de Euler necesita hacer 40 iteraciones para llegar
y(1) ≈ 2.363232439887880, mientras que método de Runge Kutta solo 10 iteraciones
con h = 0.1 para llegar y(1) ≈ 2.3678797744124984

También podría gustarte