Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MÉTODO DE RUNGE-KUTTA 4to Orden
MÉTODO DE RUNGE-KUTTA 4to Orden
Y es sumamente útil para casos en los que la solución no puede hallarse por los métodos
convencionales (como separación de variables). Hay variaciones en el método de
Runge-Kutta de cuarto orden pero el más utilizado es el método en el cual se elige un
tamaño de paso h y un número máximo de iteraciones n tal que
y se realiza la iteración
Para i = 0,…, n-1. La solución se da a lo largo del intervalo (to, to+ hn).
1
El algoritmo para el método de Runge-Kutta de cuarto orden en seudo código es el
siguiente:
INICIO
INPUT: Número de iteraciones n (o tamaño de paso h), punto inicial del intervalo a
(punto final del intervalo b), condición inicial y (t0) = y0.
OUTPUT (t, y)
PARA
OUTPUT (t, y)
FIN PARA
FIN
2
Un software apropiado y muy útil además de fácil de programar es Matlab, con el cual
resolveremos el siguiente ejemplo:
Resolver numéricamente con 100 iteraciones en el intervalo [1, 100] la
ecuación diferencial con condiciones iniciales dada a continuación:
Solución: Es claro que la ecuación diferencial dada no tiene una solución analítica
exacta ya que al realizar separación de variables nos encontramos con una función que
no posee antiderivada. Entonces tenemos que
3
La gráfica del resultado que entrega el programa es la siguiente:
4
Resolver la ecuación diferencial.
5
6
Se tiene entonces:
7
Puede observarse en la gráfica que la aproximación realizada por el método de Runge-Kutta
es muy cercana al valor exacto de la solución, lo cual puede confirmarse con la vista de los
errores absolutos, siendo el mayor error del orden de 10-3 e igual a cero luego de t =13.5, es
decir, la aproximación numérica es igual a la solución real en esos casos.
8
A continuaci´on vamos a utilizar el m´etodo de Runge-Kutta de cuarto orden, para
resolver el problema de valor inicial
dy
= f (t, y) = −t y , y(0) = 2
, dt
para conocer un valor aproximado de y(1), con un paso h =
0.2. Empezamos calculando las siguientes constantes:
−1.454
con lo cual
f[t , y ] := −
t
y; a = 0.;
b = 1.;
dato = {2.} ;
n = 5;
h = (b− a)/n;
nodo = Table[a + ih,{ i, 0,} n ];
For[i = 2, i <= n + 1, i + +,
m1 = f[nodo[[i − 1]], dato[[i − 1]]];
m2 = f[nodo[[i − 1]] + h/2, dato[[i − 1]] + (h/2)m1];
m3 = f[nodo[[i − 1]] + h/2, dato[[i − 1]] + (h/2)m2];
m4 = f[nodo[[i − 1]] + h, dato[[i − 1]] + hm3];
AppendTo[dato, dato[[i − 1]] + (h/6)(m1 + 2m2 + 2m3 + m4)]];
Print[Table[{nodo[[i]], dato[[i]]}, {i, n + 1}], PlotJoined
→ True]
9
10