Script hanging during plot of Runge-Kutta

Hi I wrote the following script, but it hangs right after plt.show(). I would
really appreciate it if someone could take a look and let me know where I'm
messing up. Thanks in advance

from numpy import *
import matplotlib.pyplot as plt

#H=p^2/2-cosq
#p=dp=-dH/dq
#q=dq=dH/dp

t = 0
h = 0.5
pfa = [] #Create arrays that will hold pf,qf values
qfa = []

while t < 10:
  q = 1+t
  p = -sin(q+t)

  p1 = p
  q1 = q
  p2 = p + h/2*q1
  q2 = q + h/2*p1
  p3 = p+ h/2*q2
  q3 = q+ h/2*p2
  p4 = p+ h/2*q3
  q4 = q+ h/2*p4
  pf = (p +(h/6)*(p1+2*p2+3*p3+p4))
  qf = (q +(h/6)*(q1+2*q2+3*q3+q4))
  #pf = log10(pf) #Convert to log scale
  #qf = log10(qf)
  pfa.append(pf) #append arrays
  qfa.append(qf)
  t += h #increase time step
                                  
  print("test")
  plt.plot(pfa,qfa)
  print("test1")
  plt.show()
  print("tes2t")

···

--
View this message in context: http://old.nabble.com/Script-hanging-during-plot-of-Runge-Kutta-tp33354840p33354840.html
Sent from the matplotlib - users mailing list archive at Nabble.com.

Hi I wrote the following script, but it hangs right after plt.show(). I would
really appreciate it if someone could take a look and let me know where I'm
messing up. Thanks in advance

That's what show() does in a script--it displays the plot and blocks execution until you close the window. It can be more complicated than that depending on the version of mpl you are running. So, what version are you running, and what is the behavior you are trying to achieve? An animation?

Eric

···

On 02/19/2012 07:08 PM, surfcast23 wrote:

from numpy import *
import matplotlib.pyplot as plt

#H=p^2/2-cosq
#p=dp=-dH/dq
#q=dq=dH/dp

t = 0
h = 0.5
pfa = [] #Create arrays that will hold pf,qf values
qfa = []

while t< 10:
   q = 1+t
   p = -sin(q+t)

   p1 = p
   q1 = q
   p2 = p + h/2*q1
   q2 = q + h/2*p1
   p3 = p+ h/2*q2
   q3 = q+ h/2*p2
   p4 = p+ h/2*q3
   q4 = q+ h/2*p4
   pf = (p +(h/6)*(p1+2*p2+3*p3+p4))
   qf = (q +(h/6)*(q1+2*q2+3*q3+q4))
   #pf = log10(pf) #Convert to log scale
   #qf = log10(qf)
   pfa.append(pf) #append arrays
   qfa.append(qf)
   t += h #increase time step

   print("test")
   plt.plot(pfa,qfa)
   print("test1")
   plt.show()
   print("tes2t")

Your script works fine for me. It's just that on the first pass
through the loop you're calling plt.plot() and asking it to plot a
line defined by a single point, so the plot is blank.

If you close the plot you'll see that the next one has a line. Close
that and you'll see a line composed of two segments etc...

Alternatively, reduce the indentation level of your plot command and
plot the entire trace after the loop completes.

Cheers,
Scott

···

On 20 February 2012 07:08, surfcast23 <surfcast23@...287...> wrote:

Hi I wrote the following script, but it hangs right after plt.show(). I would
really appreciate it if someone could take a look and let me know where I'm
messing up. Thanks in advance