Advertisement
Guest User

Untitled

a guest
Jul 27th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.12 KB | None | 0 0
  1. using DataStructures
  2. #How many manipulations do you need to get to angle 0?
  3. function pendulum_update!(angle,vel,accel,reached)
  4.     if angle > 0
  5.         accel_sign = -1
  6.     elseif angle < 0
  7.         accel_sign = 1
  8.     else
  9.         #println("Went through 0!")
  10.         accel_sign = sign(vel)
  11.         reached = true
  12.     end
  13.     vel += accel*accel_sign
  14.     angle += vel
  15.     return (angle,vel,accel,reached)
  16. end
  17.  
  18. #swing the pendulum until vel = 0
  19. function swing_max(angle,vel,accel,reached)
  20.     angle,vel,accel,reached = pendulum_update!(angle,vel,accel,reached)
  21.     while vel != 0
  22.         angle,vel,accel,reached = pendulum_update!(angle,vel,accel,reached)
  23.     end
  24.     return angle,vel,accel,reached
  25. end
  26.  
  27. function test()
  28.     angle = -6812
  29.     vel = 0
  30.     counter = 0
  31.     reached = false
  32.     while abs(angle) < 32767
  33.         accel = [13,13,42][rand(1:3)]
  34.         angle, vel, accel, reached = swing_max(angle,vel,accel,reached)
  35.         counter += 1
  36.     end
  37.     return round(counter/1800,digits=2)
  38. end
  39.  
  40. c = 0
  41. for i=1:100
  42.     j = test()
  43.     global c += j
  44. end
  45. println("Average of 100 trials: ",c/100, " hours")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement