2016-04-23 91 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