所以我試圖編寫一個代碼來模擬捕食者和獵物數量很少的捕食者和獵物情況。隨着時間的推移,捕食者的數量會不斷增加,而獵物的數量會減少,直到獵物數量太少而無法維持捕食者的數量。捕食者人口消失,然後獵物種羣能夠重新繁殖。當兩個種羣中的一個達到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