2016-02-09 143 views
1

我想绘制一个runge kutta方程,但它显示一个空值。我的逻辑在哪里出了问题?剧情python显示空值

for n in xrange(0,10):  
    k1 = R*T[n] + g*h[n] 
    l1 = -1*r*h[n] - a*b*T[n] 


    k2 = R*(T[n]+k1*not_dt/2) + g*(h[n]+l1*not_dt/2) 
    l2 = -1*r*(h[n]+l1*not_dt/2) - a*b*(T[n]+k1*not_dt/2) 


    k3 = R*(T[n]+k2*not_dt/2) + g*(h[n]+l2*not_dt/2) 
    l3 = -1*r*(h[n]+l2*not_dt/2) - a*b*(T[n]+k2*not_dt/2) 


    k4 = R*(T[n]+k3*not_dt) + g*(h[n]+l3*not_dt)   
    l4 = -1*r*(h[n]+l3*not_dt) - a*b*(T[n]+k3*not_dt)   


    T[n+1] = T[n] + not_dt/6 *(k1+2*k2+2*k3+k4) 
    h[n+1] = h[n] + not_dt/6 *(l1+2*l2+2*l3+l4) 


plt.plot(T[n+i],h[n+i]) 

也许我尽量简化了一下

T[0] = 11 
h[0] = 0 

for test in xrange(0, 10): 
    k1 = T[test] + h[test] 
    k2 = 2*k1 
    k3 = 2*k2 

    T[test+1] = T[test]+k3 
    h[test+1] = h[test]+k2 
    print T[test+1], h[test+1] 

plt.plot(T[test+1],h[test+1]) 

我试着运行上述简化脚本,并将其打印提供了价值,但它在情节只是不会出现了。所以这个问题或许最终与runge kutta无关,仅仅是绘图中的一些逻辑。对于那个很抱歉。

+0

这是不可能的。你可以用4个空格缩进你的行来获得等宽代码文本吗?如果完成后它看起来不像Python,请继续编辑它直到它完成。 – kwinkunks

+0

我编辑过它。我希望它更具可读性。 –

+0

您能否提供所有需要绘制的数据?因此,一个完整的[MCVE](http://stackoverflow.com/help/mcve)会很好,因为不知道你正在计算的人可能知道你的代码出了什么问题。 – albert

回答

1

您正在循环的外部使用未定义循环的运行索引。

您试图精确绘制一个点,而不是数组。使用

plt.plot(T,h) 

提供的两个列表具有相同的长度。

+0

是的!有用!这就是解释。谢谢。并感谢人们回答我的问题。 –