Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.68 KB | None | 0 0
  1. from pylab import *
  2. from numpy import array,zeros,arange
  3. def oscilator(state,time):
  4. k=2
  5. m=1
  6. v0=state[1]
  7. a=-k/m*state[0]
  8. return array([v0,a])
  9. def Euler(y,t,dt,derivative):
  10. y_next=y+(derivative(y,t)+derivative(y+derivative(y,t)*dt,t+dt))*dt/2.
  11. return y_next
  12. xo=10 # initial conditions
  13. vo=0
  14. dt=0.1
  15. to=0
  16. te=500
  17. t=arange(to,te,dt)
  18. N=len(t)
  19. y=zeros([N,2])
  20. y[0,0]=xo
  21. y[0,1]=vo
  22.  
  23. for i in range(N-1):
  24. y[i+1]=Euler(y[i],t[i],dt,oscilator)
  25.  
  26. position=[y[j,0] for j in range(N)]
  27. velocity=[y[j,1] for j in range(N)]
  28. subplot(2,1,1)
  29. plot(t,position)
  30. ylabel("x")
  31. xlabel("time")
  32. subplot(2,1,2)
  33. plot(t,velocity)
  34. ylabel("v")
  35. xlabel("time")
  36. show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement