所以我试图编写一个代码来模拟捕食者和猎物数量很少的捕食者和猎物情况。随着时间的推移,捕食者的数量会不断增加,而猎物的数量会减少,直到猎物数量太少而无法维持捕食者的数量。捕食者人口消失,然后猎物种群能够重新繁殖。当两个种群中的一个达到0时,仿真应该停止,在这种情况下,捕食者群体将随着仿真时间划分两个群体,直到它停止。这是到目前为止我的代码:Python:Loop没有给出想要的结果
import matplotlib.pyplot as plt
def simulate(initialPred, initialPrey, preyGrowth, predationRate, predShrink, predFedBirthRate):
preyCounts = []
predatorCounts = []
predatorI = initialPred
preyI = initialPrey
predator = predatorI
prey = preyI
while predator > 0 and prey > 0:
predator = predatorI * (1 - predShrink + predFedBirthRate * preyI)
prey = preyI * (1 + preyGrowth - predationRate * predatorI)
predatorCounts.append(predator)
preyCounts.append(prey)
predatorI = predator
preyI = prey
plt.plot(predatorCounts, 'r', preyCounts, 'b')
plt.show()
return preyCounts, predatorCounts
simulate(50,1000,0.25,0.01,0.05,0.00002)
有人能帮助我吗?
*也除了这个,每当我把我的绘图代码的功能以外的功能线后的值里面是这样的:
simulate(50,1000,0.25,0.01,0.05,0.00002)
plt.plot(predatorCounts, 'r', preyCounts, 'b')
plt.show()
它不会从绘制函数的值,并说predatorCounts
和preyCounts
未定义。
我没有看到在while循环中更新'prey'的代码?这是所需的行为? PS:我对“matplotlib”一无所知 –
你可以在while循环的顶部放一个print语句来看看'''predatorI'''和'''preyI'''发生了什么 - 这可能会给你一个线索。 – wwii
一个问题是,你的条件不起作用。有时候你的条件对待0.4只猎物是有效的,但我想象一只兔子的十分之四已经死了。 – wwii