2016-04-23 87 views
0

我目前正試圖弄清楚如何在程序中存儲兩組值t和y,以便我可以在圖上繪製這些數據點。我相信正確的方法是使用數組,但我不知道如何繼續。在python中使用數組

import numpy as np 
import matplotlib.pyplot as plt 


t = 0.0 
y = 0.0 
u = 0.0 
F = 0.2 
Wd = 2*3.14 
w0 = 1.5*Wd 
b = w0/4 


h= 0.05 

while (t <= 5.95): 
    m1 = u 
    k1 = (-w0**2)*np.sin(y) + u*(1-2*b) + F*(w0**2)*np.cos(Wd*t) 
    m2 = u + (h/2.) * k1 
    t_2 = t + (h/2.) 
    y_2 = y +(h/2.) * m1 
    u_2 = m2 
    k2 = (-w0**2)*np.sin(y_2) + u_2*(1-2*b) + F*(w0**2)*np.cos(Wd*t_2) 
    m3 = u + (h/2.) * k2 
    t_3 = t + (h/2.) 
    y_3 = y + (h/2.) * m2 
    u_3 = m3 
    k3 = (-w0**2)*np.sin(y_3) + u_3*(1-2*b) + F*(w0**2)*np.cos(Wd*t_3) 
    m4 = u + h * k3 
    t_4 = t + h 
    y_4 = y + h * m3 
    u_4 = m4 
    k4 = (-w0**2)*np.sin(y_4) + u_4*(1-2*b) + F*(w0**2)*np.cos(Wd*t_4) 
    t = t + h 
    y = y + (h/6.) * (m1 + (2 * m2) + (2 * m3) + m4) 
    u = u + (h/6.) * (k1 + (2 * k2) + (2 * k3) + k4) 
    print t, y 
+0

那麼,什麼不起作用?你在掙扎什麼? – martijnn2008

+0

我想從我的Python代碼中獲取打印值,並將它們繪製在圖形上,其中t是x軸,y是y軸。 – Cosmoman

回答

0

雖然打印ty使用plt.scatter(t, y) 循環使用後plt.show()

或者

您可以保存ty在陣列TY和以後使用plt.scatter(T, Y)plt.show()繪製。

enter image description here

要繪製線

T, Y = [], [] 

循環開始

.... 
.... 
t = t + h 
y = y + (h/6.) * (m1 + (2 * m2) + (2 * m3) + m4) 
T.append(t) 
Y.append(y) 
.... 
.... 

循環結束

plt.plot(T, Y) 
plt.show() 

enter image description here

+0

謝謝!你知道如何通過所有點包括一條線嗎? – Cosmoman

+0

請檢查答案。 – qmaruf

+0

感謝您的幫助! – Cosmoman

0

只要把你的價值觀的名單和他們算賬運行圖:

... 
ts = [] 
ys = [] 
while (t <= 5.95): 
    ... 
    y = y + (h/6.) * (m1 + (2 * m2) + (2 * m3) + m4) 
    u = u + (h/6.) * (k1 + (2 * k2) + (2 * k3) + k4) 
    ts.append(t) 
    ys.append(y) 

plt.plot(ts,ys) 
plt.show() 
+0

感謝您的幫助! – Cosmoman