Runge-Kutta 2º orden

He aquí un pequeño script realizado en el día de ayer. La verdad, no es muy util para tareas en general, pero muestra lo rápido (y preciso) que es este método para trabajar con EDO. Puede bajarse desde acá.

#!/usr/bin/python

x0 = float(raw_input("x0 = "))
y0 = float(raw_input("y0 = "))
h = float(raw_input("h = "))
w = float(raw_input("w = "))
def funx(x,y):
    return 2*y-2*x-1
k = float(raw_input("iteraciones?  "))
u = 0
x = x0
y = y0
while not u == k:
    fm = funx(x,y)
    k1 = h*fm
    xg = x+(h/(2*w))
    yg = y+(k1/(2*w))
    fg = funx(xg,yg)
    k2 = h* fg
    print "%3i" %u,"%5.1f" %x," | ","%5.10f" %y
    y = y + (1-w)*k1 + w*k2
    x = x+h
    u += 1

Enjoy!

Anuncios

About fclad

Estudiante de ingeniería, con todo lo que conlleva!
Esta entrada fue publicada en Comp, Proyectos y etiquetada , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s