El método de Runge-Kutta es un método genérico de resolución numérica de ecuaciones diferenciales. El método de Runge-Kutta no es sólo un único método, sino una importante familia de métodos iterativos, tanto implícitos como explícitos, para aproximar las soluciones de ecuaciones diferenciales ordinarias (E.D.O´s); estas técnicas fueron desarrolladas alrededor de 1900 por los matemáticos alemanes Carl David Tolmé Runge y Martin Wilhelm Kutta.
http://es.wikipedia.org/wiki/Método_de_Runge-Kutta
El método de Runge-Kutta de cuarto orden es el más utilizado para resolver numéricamente problemas de ecuaciones diferenciales ordinarias con condiciones iniciales,ya que proporciona un pequeño margen de error con respecto a la solución real del problema y es fácilmente programable en un software para realizar las iteraciones necesarias.
Recordemos que las ecuaciones diferenciales ordinarias son las ecuaciones donde todas las funciones y sus derivadas dependen de solo una variable independiente, es decir:
y = f(x)
El método de Runge-Kutta se utiliza para resolver ecuaciones diferenciales en su forma forma explícita:
[1]
o en su forma implícita:
[1]
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.
El método RK4 esta dado por la ecuación:
[1]
Para i=0,…,n-1. La solución se da a lo largo del intervalo (xo,xo+hn), donde:
[1]
El tamaño de paso (h) se define como el incremento de tiempo entre los sucesivos puntos tn y tn+1.
Así, el siguiente valor (yi+1) es determinado por el presente valor (yi) más el producto del tamaño del intervalo (h) por una pendiente estimada.
La pendiente es un promedio ponderado de pendientes:
- k1 es la pendiente al principio del intervalo
- k2 es la pendiente en el punto medio del intervalo, usando k1 para determinar el valor de y en el punto xi + h/2.
- k3 es otra vez la pendiente del punto medio, pero ahora usando k2 para determinar el valor de y
- k4 es la pendiente al final del intervalo, con el valor de y determinado por k3
Se promedian las 4 pendientes y se le asigna mayor peso a las pendientes en el punto medio:
[1]
Ejemplo
Las imágenes yo las hice, me apoye en LibreOffice para poder escribir las ecuaciones.
Como el programita se basa en iteraciones, lo que hice fue programar las fórmulas en python y correrlo hasta obtener el resultado final.
Código
Ejecución
Podemos asi comprobar que la primera iteracion hecha a mano es consistente con los resultados obtenidos con la programación.
Finalmente, obtenemos en la quinta iteración el resultado aproximado:
y(0.5) = 1.284025
Comprobación
Podemos ver que el error es mínimo, de solo 0.000005+, lo cual es una excelente aproximación al resultado real.
Espero les haya servido mi explicación, cualquier duda por favor dejen un comentario.
Saludos
- [1] Fotografia tomada de http://fisica.udea.edu.co/~lab-gicm/Curso%20de%20Instrumentacion/2011_RungeKutta.pdf
- http://canek.uam.mx/Ecuaciones/Teoria/7.MetodosNumericos/ImpRungeKutta.pdf
- http://portalevlm.usal.es/Portal/e_books/guiaalumno/Chapter10SG_Spanish.pdf
- http://www.itmorelia.edu.mx/electrica/Notas/Lino_Coria/Metodos_Numericos/METODOS_DE_RUNGE_KUTTA.pdf
- http://delta.cs.cinvestav.mx/~mcintosh/comun/rodolfo/node11.html#deri
- http://users.salleurl.edu/~oscarg/resources/dinam0/dpja1.html
- http://fisica.udea.edu.co/~lab-gicm/Curso%20de%20Instrumentacion/2011_RungeKutta.pdf
Bien; hubiera sido aún mejor con una gráfica comparando la solución analítica y la calculada. Van 14 pts.
ResponderEliminarMuchas gracias enhorabuena hermano me será de mucha ayuda, la verdad me siento inútil al a ver copiado por completo el código sin poner nada de mi parte si no es mucho que pedir me gustaría saber como te enseñaste a programar en este magnifico lenguaje de programación (PYTHON) ya que yo soy novato y ocupo a aprender a programar a la voz de ya, espero tu respuesta y nuevamente gracias
ResponderEliminar¡Gracias!
ResponderEliminar