%matplotlib inline import numpy as np import matplotlib.pyplot as plt from ipywidgets import StaticInteract, RangeWidget, RadioWidget #Ex = 0 #Ey = 5 m = 1 q = 1 dt = 0.1 def main(Ex,Ey): def force(): return [Ex,Ey] def euler_step(x,Vx,y,Vy): array = force() Fy = Vy fy = array[1] Fx = Vx fx = array[0] return [fx*dt, Fx*dt, fy*dt, Fy*dt] i = 0 x = 0 y = 0 Vx = 1 Vy = 1 xposn = [] yposn = [] while i<100: array = euler_step(x,Vx,y,Vy) # array = rk2_step(k,m,y,dy) Vx += array[0] x += array[1] Vy += array[2] y += array[3] #print y,dy xposn.append(x) yposn.append(y) i +=1 return [xposn,yposn] def plot(Ex,Ey): fig, ax = plt.subplots(figsize=(4, 3), subplot_kw={'axisbg':'#EEEEEE', 'axisbelow':True}) ax.grid(color='w', linewidth=2, linestyle='solid') alist = main(Ex,Ey) xlist = alist[0] ylist = alist[1] ax.plot(xlist, ylist, lw=5, alpha=0.4)#, label = Ex/Ey) ax.legend(loc='upper right') #ax.set_xlim(0,2*np.pi) #ax.set_ylim(-1, 1) return fig StaticInteract(plot, Ex=RangeWidget(0., 1., 1.), Ey=RangeWidget(0., 1., 1.)) Ex = 0 Ey = 5 m = 1 q = 1 x = 0 y = 0 Vx = 1 Vy = 0 dt = 0.1 xposn = [] yposn = [] def force(): return [Ex,Ey] def euler_step(x,Vx,y,Vy): array = force() Fy = Vy fy = array[1] Fx = Vx fx = array[0] return [fx*dt, Fx*dt, fy*dt, Fy*dt] i = 0 while i<100: array = euler_step(x,Vx,y,Vy) # array = rk2_step(k,m,y,dy) Vx += array[0] x += array[1] Vy += array[2] y += array[3] #print y,dy xposn.append(x) yposn.append(y) i +=1 plt.plot(xposn,yposn)