lunes, 12 de diciembre de 2011

Ecuaciones diferenciales ordinarias


'edo a resolver
Public Function g(t, y) As Double

    g = (t - y) / 2

End Function


'runge kutta 44
Public Function rk_44(t0, y0, h) As Double

    k1 = g(t0, y0)
    k2 = g(t0 + h / 2, y0 + h * k1 / 2)
    k3 = g(t0 + h / 2, y0 + h * k2 / 2)
    k4 = g(t0 + h, y0 + h * k3)
    
    rk_44 = y0 + (h / 6) * (k1 + 2 * k2 + 2 * k3 + k4)

End Function

'heun
Public Function e_heun(t0, y0, h) As Double

    yp = y0 + h * g(t0, y0)
    e_heun = y0 + 0.5 * h * (g(t0, y0) + g(t0 + h, yp))

End Function

'poligono mejorado
Public Function poli_m(t0, y0, h) As Double

    ym = y0 + 0.5 * h * g(t0, y0)
    poli_m = y0 + h * g(t0 + h / 2, ym)

End Function

'ralston
Public Function ralston_(t0, y0, h) As Double

    k1 = g(t0, y0)
    k2 = g(t0 + 0.75 * h, y0 + 0.75 * h * k1)
    ralston_ = y0 + (h / 3) * (k1 + 2 * k2)
    
End Function

'euler explicito
Public Function eu_ex(t0, y0, h)

    eu_ex = y0 + h * g(t0, y0)

End Function

No hay comentarios:

Publicar un comentario