\(\newcommand{\B}[1]{ {\bf #1} }\) \(\newcommand{\R}[1]{ {\rm #1} }\)
runge_kutta.py¶
View page sourcePython runge_kutta Source Code¶
# BEGIN DEF
def runge_kutta(like_numpy, fun, yi, tf, ns) :
assert type(ns) == int
assert type(yi) == type( like_numpy.array(1.0) )
# END DEF
#
# two, six
two = like_numpy.array( 2.0 )
six = like_numpy.array( 6.0 )
#
# h
h = like_numpy.array( tf / float(ns) )
#
# i_step, yf
yf = yi
for i_step in range(ns) :
#
# k1
k1 = fun(yf)
#
# k2
y_tmp = yf + k1 * (h / two)
k2 = fun(y_tmp)
#
# k3
y_tmp = yf + k2 * (h / two)
k3 = fun(y_tmp)
#
# k4
y_tmp = yf + k3 * h
k4 = fun(y_tmp)
#
# yf
yf = yf + (k1 + two * k2 + two * k3 + k4) * (h / six)
#
# BEGIN RETURN
return yf
# END RETURN