Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using DataStructures
- #How many manipulations do you need to get to angle 0?
- function pendulum_update!(angle,vel,accel,reached)
- if angle > 0
- accel_sign = -1
- elseif angle < 0
- accel_sign = 1
- else
- #println("Went through 0!")
- accel_sign = sign(vel)
- reached = true
- end
- vel += accel*accel_sign
- angle += vel
- return (angle,vel,accel,reached)
- end
- #swing the pendulum until vel = 0
- function swing_max(angle,vel,accel,reached)
- angle,vel,accel,reached = pendulum_update!(angle,vel,accel,reached)
- while vel != 0
- angle,vel,accel,reached = pendulum_update!(angle,vel,accel,reached)
- end
- return angle,vel,accel,reached
- end
- function test()
- angle = -6812
- vel = 0
- counter = 0
- reached = false
- while abs(angle) < 32767
- accel = [13,13,42][rand(1:3)]
- angle, vel, accel, reached = swing_max(angle,vel,accel,reached)
- counter += 1
- end
- return round(counter/1800,digits=2)
- end
- c = 0
- for i=1:100
- j = test()
- global c += j
- end
- println("Average of 100 trials: ",c/100, " hours")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement