# gui
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
import numpy as np
# ODE
from scipy.integrate import RK45
win = pg.GraphicsWindow()
p1 = win.addPlot()
data = np.empty([100000,2]) # Holds time dep. solution
g = 0.5
cntr = 0
def EOM(t,y):
global g
return -g*y
def update():
p1.plot(tcData[:cntr,:])
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(0)
tC = np.linspace(-0.5,0.5,20) # Sweep parameter
tcData = np.empty([len(tC),2]) # Holds mean solution (plot this data)
for idx,item in enumerate(tC):
ode = RK45(EOM, 0, [5],t_bound=10,max_step=0.001)
cntr = 0
g = item
while ode.status == 'running':
ode.step()
data[cntr,0] = ode.t
data[cntr,1] = ode.y
cntr+=1
tcData[idx,0] = item
tcData[idx,1] = np.mean(data[:,1])
print( idx )
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()