print 'running ddp...'
ddp.run(x0_model, uk0)

# pr.disable()
# s = StringIO.StringIO()
# ps = pstats.Stats(pr, stream=s)
# ps.sort_stats('time', 'cumulative').print_stats(.5, 'init')
# ps.print_stats()
# ps.print_callers(.5, 'init')
# print >> f, s.getvalue()

#apply control to real system
x0 = np.array([[0.0], [0.0]])
realsys = Pendulum(systeminfo['params'])
print 'running system...'
xtraj_sys = realsys.splitAngle(realsys.runSystem(x0, ddp.uk))
print 'running model...'
xtraj_model = sys.runSystem(x0_model, uk0)
print 'running system with feedback'
xtraj_sys_feedback = realsys.splitAngle(
    realsys.runSystemWithFeedback(x0,
                                  ddp.uk,
                                  ddp.K[:, :xdim, 0, :],
                                  xtraj_model[:xdim, :],
                                  feedback_split=True))

print 'plotting...'
fig, axes = plt.subplots(nrows=xdim + 1, ncols=1)
pd.DataFrame(ddp.uk.T).plot(ax=axes[0], legend=False, title='u')
for i in xrange(xdim):
    pd.DataFrame(np.vstack(