Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2301 IQ4112 04 02 Metodos Runge Kutta
2301 IQ4112 04 02 Metodos Runge Kutta
QUÍMICA, BIOTECNOLOGÍA
Y MATERIALES
FACULTAD DE CIENCIAS
FÍSICAS Y MATEMÁTICAS
UNIVERSIDAD DE CHILE
Indicadores de logro
El objetivo es calcular la trayectoria en el tiempo de un conjunto de N variables xj (t) gobernadas por un sistema de
ecuaciones diferenciales de primer orden
dx
= ẋ = f(x) x(t0 ) = x[0] (1)
dt
Reglas iterativas para actualizar la trayectoria.
Se desea que la trayectoria numérica aproxime la solución exacta:
Z t
x(t) = x[0] + f(x(t0 )) dt0 (2)
t0
A + B −→ C rR1 = k1 CA CB
C + B −→ D rR2 = k2 CC CB
dCA dCB
= −rR1 = −rR1 − rR2 (3)
dt dt
dCC dCD
= rR1 − rR2 = rR2 (4)
dt dt
Sea x el vector de estados del sistema:
x = [CA CB CC CD ]T
Preguntas
¿Este problema es general?
¿Qué sucede si f depende de t?
¿Qué sucede si el orden de las derivadas es superior a 1?
J. Cristian Salgado - http://salgadolab.diqbt.uchile.cl IQ4112 - Capítulo 4: Métodos Runge Kutta
Introducción
Métodos Runge-Kutta
Métodos de Runge-Kutta adaptativos
Contenidos detallados
x[0]
ẏ = g(y;Θ) y(t0 ) = y[0] = (13)
t0
d2 u du
a2 (u,t) + a1 (u,t) + a0 (u,t) = 0 (14)
dt2 dt
Sea el vector de estados: T
du
x= u t (15)
dt
y reescribimos el ODE como:
dx2
a2 (x1 ,x3 ) + a1 (x1 ,x3 )x2 + a0 (x1 ,x3 ) = 0 (16)
dt
Si a2 (x1 ,x3 ) 6= 0, podemos obtener un problema en la forma estándar:
x˙1 x2
ẋ = x˙2 = −[a1 (x1 ,x3 )x2 + a0 (x1 ,x3 )]/a2 (x1 ,x3 ) (17)
x˙3 1
Ejemplos
(a) https://www.youtube.com/watch?v=dtHwS2VJt5o
Métodos Runge-Kutta
Los métodos de la familia Runge Kutta pueden alcanzar la exactitud de los métodos basados en las series de Taylor sin la
necesidad de calcular derivadas de alto orden.
φ = a1 k1 + a2 k2 + ··· + an kn (21)
Métodos Runge-Kutta
En la función de incremento
φ = a1 k1 + a2 k2 + ··· + an kn (22)
ai son constantes y ki pueden ser calculadas de la siguiente manera:
Método de Euler
(Runge-Kutta con n = 1)
Para n = 1,
Note que f (xi ,y[i] ) provee un estimado directo de la derivada en xi utilizando una estimación FFD.
f (xi ,y[i] )0 2
ETEuler ≈ h = O(h2 )
2!
donde,
a1 = 1/2
a2 = 1/2
p1 = 1
q1,1 = 1
1 1
y[i+1] = y[i] + ( k1 + k2 ) h (32)
2 2
donde,
Eligiendo a2 = 1 se obtiene:
a1 = 0
a2 = 1
p1 = 1/2
q1,1 = 1/2
donde,
Eligiendo a2 = 1 se obtiene:
a1 = 0
a2 = 1
p1 = 1/2
q1,1 = 1/2
donde,
Método de Ralston
Runge-Kutta de segundo orden con a2 = 2/3
Se desea resolver:
dy
= 10 · e(−(x−2) /(2·0.075 )) − 0.6y
2 2
y(0) = 0.1 (44)
dx
Mediante los métodos de
RK1: Euler
RK2: Heun
RK2: Punto medio
RK2: Ralston
Para el intervalo x ∈ [1,3] con un paso h = 0.1
Trayectorias
1.8
Exacta
RK1: Euler
1.6
RK2: Heun
RK2: PM
1.4 RK2: Ralston
1.2
1
y
0.8
0.6
0.4
0.2
0
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
J. Cristian Salgado - http://salgadolab.diqbt.uchile.cl IQ4112 - Capítulo 4: Métodos Runge Kutta
Introducción
Introducción
Runge-Kutta de primer y segundo orden
Métodos Runge-Kutta
Comparación de métodos de Runge-Kutta de bajo orden
Métodos de Runge-Kutta adaptativos
Runge-Kutta de tercer, cuarto y quinto orden
Contenidos detallados
Comparación de métodos de Runge-Kutta de alto orden
Errores en la trayectoria
1.8 70
Exacta RK1: Euler
RK1: Euler RK2: Heun
1.6
RK2: Heun 60
RK2: PM
RK2: PM RK2: Ralston
1.4 RK2: Ralston
50
1.2
40
Error %
1
y
0.8
30
0.6
20
0.4
10
0.2
0 0
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
x x
25 1.5
20
15
1
avg y std error %
|Error absoluto|
10
0.5
0
−5
−10 0
Euler Heun PM Ralston RK3 RK4 RK1: Euler RK2: Heun RK2: PM RK2: Ralston
Metodo Metodo
El método de Runge-Kutta para n = 3 se obtiene por comparación con una expansión de Taylor de orden 3. Se obtienen 8
parámetros y 6 ecuaciones, luego, deben especificarse 2 parámetros.
Con esto la ecuación del método queda como:
1
y[i+1] = y[i] + (k1 + 4k2 + k3 )h + O(h4 ) (45)
6
donde,
La versión clásica del método de Runge-Kutta de cuarto orden está dada por la siguiente ecuación:
1
y[i+1] = y[i] + k1 + 2k2 + 2k3 + k4 h + O(h5 )
(49)
6
donde,
Se desea resolver:
dy
= 10 · e(−(x−2) /(2·0.075 )) − 0.6y
2 2
y(0) = 0.1 (61)
dx
Mediante los métodos de
RK1: Euler
RK2: Heun
RK2: Punto medio
RK2: Ralston
RK3
RK4
Para el intervalo x ∈ [1,3] con un paso h = 0.1
Trayectorias
1.8
Exacta
RK1: Euler
1.6
RK2: Heun
RK2: PM
1.4 RK2: Ralston
RK3
RK4
1.2
1
y
0.8
0.6
0.4
0.2
0
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
J. Cristian Salgado - http://salgadolab.diqbt.uchile.cl IQ4112 - Capítulo 4: Métodos Runge Kutta
Introducción
Introducción
Runge-Kutta de primer y segundo orden
Métodos Runge-Kutta
Comparación de métodos de Runge-Kutta de bajo orden
Métodos de Runge-Kutta adaptativos
Runge-Kutta de tercer, cuarto y quinto orden
Contenidos detallados
Comparación de métodos de Runge-Kutta de alto orden
Errores en la trayectoria
1.8
Exacta
RK1: Euler
1.6
RK2: Heun
RK2: PM
1.4 RK2: Ralston 2
10
RK3
RK4
1.2
0
10
1
y
−2
10
0.8
Error %
0.6 −4
10
RK1: Euler
0.4 RK2: Heun
−6
RK2: PM
10
0.2 RK2: Ralston
RK3
RK4
0 −8
10
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
x x
25 1.5
20
15
1
avg y std error %
|Error absoluto|
10
0.5
0
−5
−10 0
Euler Heun PM Ralston RK3 RK4 Euler Heun PM Ralston RK3 RK4
Metodo Metodo
Introducción
Los métodos de Runge-Kutta presentados en la sección anterior utilizan un paso de integración h constante.
Un paso constante puede dar origen a problemas muy serios.
Ajuste del tamaño h automágico.
Algoritmos con control de paso adaptativo.
Una estimación del error de truncamiento sirve para corregir el paso.
Este método requiere que cada paso sea efectuado dos veces:
[i+1]
Paso completo (y1 )
[i+1/2] [i+1]
Dos pasos (y1/2 −→ y2 )
La diferencia entre ambos se considera como un estimado del error de truncamiento
[i+1] [i+1]
∆ = |y2 − y1 |
Este método estima el error utilizando dos estimaciones obtenidas con R-K de distinto orden.
Cuarto orden
37 250 125 512
[i+1]
y4 = y[i] + k1 + k3 + k4 + k6 h
378 621 594 1771
Quinto orden
2825 18575 13525 277 1
[i+1]
y5 = y[i] + k1 + k3 + k4 + k5 + k6 h
27648 43384 55296 14336 4
[i+1] [i+1]
∆ = |y5 − y4 |
donde,
3 3 9 6
k1 = f (xi ,y[i] ) k4 = f (xi + h,y[i] + k1 h − k2 h + k3 h)
5 10 10 5
1 1
k2 = f (xi + h,y[i] + k1 h) k5 = f (xi + h,y[i] −
11 5
k1 h + k2 h −
70
k3 h +
35
k4 h)
5 5 54 2 27 27
3 3 9
k3 = f (xi + h,y[i] + k1 h + k2 h) 7
k6 = f (xi + h,y[i] +
1631
k1 h +
175
k2 h +
575
k3 h +
44275
k4 h +
253
k5 h)
10 40 40 8 55296 512 13824 110592 4096
Control de paso
El paso puede ser ajustado con esta información mediante la siguiente expresión:
∆d α
¨
0.20 si ∆ ≤ ∆d ,
hnew = 0.9h
α=
∆ 0.25 si ∆ > ∆d
donde,
∆ es la estimación del error de truncamiento dada por el método de paso doble o el de Fehlberg.
∆d es la precisión deseada
∆d = "abs + "rel |y[i] | + |f (xi ,y[i] )h|
(62)
1: function getHstepdoubling(f ,xi ,y[i] ,h,"rel ,"abs ,kmax ) . Obtiene hnew mediante RK4 con paso adaptativo de paso doble
2: k←0
3: while k < kmax do
[i+1] [i+1]
4: ∆ ← |y2 − y1 | . Estimamos el error de truncamiento actual mediante el algoritmo de 2 pasos
[i] [i]
5: ∆d = "abs + "rel |y | + h|f (xi ,y )| . Calculamos el error de truncamiento deseado
Se desea resolver:
dy
= 10 · e(−(x−2) /(2·0.075 )) − 0.6y
2 2
y(0) = 0.1 (63)
dx
Mediante los métodos de
RK3
RK4
RK4 con paso adaptativo de paso doble
Para el intervalo x ∈ [1,3] con un paso h = 0.1 excepto en el caso adaptativo
Trayectorias
1.8
Exacta
RK4: Adaptativo paso doble
1.6
1.4
1.2
1
y
0.8
0.6
0.4
0.2
0
1 1.2 1.4 1.6 1.8
J. Cristian Salgado - http://salgadolab.diqbt.uchile.cl
2IQ4112 - Capítulo
2.2 2.4 2.6
4: Métodos Runge Kutta
2.8 3
Introducción
Introducción
Runge-Kutta adaptativo o método de paso doble
Métodos Runge-Kutta
Runge-Kutta Fehlberg
Métodos de Runge-Kutta adaptativos
Control de paso
Contenidos detallados
Comparación de métodos de Runge-Kutta adaptativos
Trayectorias
1.8
Exacta
1.6
RK4: Adaptativo paso doble
1.4
1.2
1
y
0.8
0.6
0.4
0.2
0
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
x
Errores en la trayectoria
1.8
0.45
Exacta RK3
RK4: Adaptativo paso doble RK4
1.6
0.4
RK4: Adaptativo
1.4 0.35
1.2 0.3
Error %
0.25
y
0.8 0.2
0.6 0.15
0.4 0.1
0.2 0.05
0 0
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3
x x
−3
x 10
2
0.15
1.8
1.6
0.1
1.4
|Error absoluto|
avg y std error %
1.2
0.05
0 0.8
0.6
−0.05 0.4
0.2
−0.1 0
RK3 RK4 RK4: Adaptativo RK3 RK4 RK4: Adaptativo
Metodo Metodo
Preguntas
http://www.phdcomics.com
Para una ecuación diferencial con una solución con derivadas continuas de la forma:
dy
= f (x,y)
dx
Se puede escribir una expansión de Taylor en torno a un punto inicial (xi ,y[i] ):
(1) (2) (n)
yi yi yi
y[i+1] = y[i] + h+ h2 + ··· + hn + Rn
1! 2! n!
(n−1)
f (xi ,y[i] )0 2 f (xi ,y[i] )i
y[i+1] = y[i] + f (xi ,y[i] )h + h + ··· + hn + Rn
2! n!
Luego, el error de truncamiento verdadero para el método de Euler está dado por los términos omitidos de la expansión de
Taylor:
(n−1)
f (xi ,y[i] )0 2 f (xi ,y[i] )i
ETEuler = h + ··· + hn + Rn
2! n!
Este error puede aproximarse por el error de truncamiento aproximado:
f (xi ,y[i] )0 2
ETEuler ≈ h = O(h2 )
2!
J. Cristian Salgado - http://salgadolab.diqbt.uchile.cl IQ4112 - Capítulo 4: Métodos Runge Kutta