Definition at line 8 of file rk4.py. 00008 : 00009 00010 global rk4nsave, dyt, dym, yt 00011 00012 if n!=rk4nsave: 00013 dyt=zeros(n,Float) 00014 dym=zeros(n,Float) 00015 yt=zeros(n,Float) 00016 rk4nsave=n 00017 00018 hh=h*0.5 00019 h6=h/6.0 00020 xh=x+hh 00021 00022 #dyt=derivs(xh, hh*dydx+y) the fast way 00023 multiply(dydx, hh, yt) 00024 add(yt, y, yt) 00025 derivs(xh, yt, dyt) 00026 00027 #dym=derivs(xh, hh*dyt+y) 00028 multiply(hh, dyt, yt) 00029 add(yt, y, yt) 00030 derivs(xh, yt, dym) 00031 00032 #yt=h*dym+y 00033 #dym=dym+dyt 00034 multiply(dym, h, yt) 00035 add(yt, y, yt) 00036 add(dym, dyt, dym) 00037 00038 derivs(x+h, yt, dyt) 00039 00040 #yout=h6*(2.0*dym+dyt+dydx)+y 00041 multiply(dym, 2.0, yt) 00042 add(yt, dyt, yt) 00043 add(yt, dydx, yt) 00044 multiply(yt, h6, yt) 00045 add(yt, y, yout) 00046 def rk4dumb(vstart, nvar, x1, x2, nstep, derivs):
|