我们编写了一个Euler函数来研究人口变化。
他使用while
循环将我们的值保持在生物范围内(没有生育等)。当我们运行脚本时,绘图轴的范围是-0.6到+0.6,实际上没有绘制图形。
有谁知道代码有什么问题?
t=np.zeros((n+1))
for i in range (n):
t[i+1]=t[i]+dt
s = np.zeros((n+1))
z = np.zeros((n+1))
r = np.zeros((n+1))
s[0] = N-1
z[0] =1
i=0
while s[i]>0 and s[i] <N and z[i] < N and z[i] > 0 and r[i] >0 and r[i] <N and i<n:
s[i+1] = s[i]+dt*(-b*s[i]*z[i])
z[i+1] = z[i]+dt*(b*s[i]*z[i]-a*z[i])
r[i+1] = r[i]+dt*(a*z[i])
i=i+1
self.trace(t,s,r,z,i)
def trace(self,t, s, r, z, i):
plt.plot(t[:i],s[:i],'b')
plt.plot(t[:i],z[:i],'r')
plt.plot(t[:i],r[:i],'y')
plt.show()
答案 0 :(得分:4)
我看到r
初始化为:
r = np.zeros((n+1))
然后在while循环条件下,您需要r[i] >0
。
由于i=0
,r[i]=0
和条件将为false,因此循环不会执行。
也许您错过了r[0] = ...