problem4.py

from pylab import *
from solvers import *
from pendulum_visualizer import *
from numpy import sin

l = 2.0 # pendulum length
A = 0.8 # oscillation amplitude
w = 4.0 * pi # oscillation frequency
g = 9.81 # gravitational constant

# system of first-order differential equations
f = (
    lambda t, y: y[1],
    lambda t, y: ((-g + A * pow(w, 2.0) * sin(t * w)) * sin(y[0])) / l
)

f0 = (
    0.5, # initial pendulum angle
    0.0, # initial pendulum angular velocity
)

interval = (0.0, 32.0 * pi)
h = 0.033

t, y, err = solver(RK4_step, f, f0, interval, h)
z = A * sin(w * array(t))

PendulumVisualizer(t, z, y[0], l)

#plot(t, y[0])
#show()