In [1]:
import matplotlib.pyplot as plt
%matplotlib inline

In [54]:
def next_gen(wp, sp, rp):
    wp_next = wp + wp * wb - (rp * wp * rwm * rwk) + (sp/ws)
    sp_next = sp + sp * sb - (wp * sp * wsm * wsk) + (sp/ws)
    rp_next = rp + rp * (rb - rd) - (wp * rp * rwm * wrk) + (sp/rs)
    return wp_next, sp_next, rp_next

In [77]:
def next_gen2(Pw, Ps, Pr):
    Pw_next = Pw + (Ps * Pw * Msw * Ksw) - (Pr * Pw * Mrw * Krw)
    Ps_next = Ps - (Ps * Pw * Msw * Ksw)
    Pr_next = Pr + (Ps//1000)
    return Pw_next, Ps_next, Pr_next

In [78]:
Pw = 20
Ps = 10000
Pr = 20
    
Bw = .02
Bs = .02

Msw = .05
Ksw = .5

Mrw = .01
Krw = .2

    
T = [t for t in range(101)]

In [79]:
population = [(Pw, Ps, Pr)]

In [80]:
for year in T:
    Pw, Ps, Pr = next_gen2(Pw, Ps, Pr)
    population.append((Pw, Ps, Pr))

In [81]:
population[:20]


Out[81]:
[(20, 10000, 20),
 (5019.2, 5000.0, 30),
 (632118.048, -622400.0, 35.0),
 (-9835168957.095358, 9835134426.88, -588.0),
 (-2.418255241504078e+18, 2.4182552299378847e+18, 9834546.0),
 (-1.461989596272509e+35, 1.4619895962729846e+35, 2418255239772430.0),
 (-5.343533949024373e+68, 5.343533949024373e+68, 1.4619895962729846e+32),
 (-7.138338766094004e+135, 7.138338766094004e+135, 5.3435339490243735e+65),
 (-1.273897008488012e+270, 1.273897008488012e+270, 7.138338766094004e+132),
 (nan, inf, 1.273897008488012e+267),
 (nan, nan, nan),
 (nan, nan, nan),
 (nan, nan, nan),
 (nan, nan, nan),
 (nan, nan, nan),
 (nan, nan, nan),
 (nan, nan, nan),
 (nan, nan, nan),
 (nan, nan, nan),
 (nan, nan, nan)]

In [68]:
plt.plot(population)


Out[68]:
[<matplotlib.lines.Line2D at 0x108fd3850>,
 <matplotlib.lines.Line2D at 0x108faef50>,
 <matplotlib.lines.Line2D at 0x108fd3e50>]