#!/usr/bin/python
#-------------------------------------------------------
#
# sir.py - A simple differential equation model
# of a measles-like epidemic.
# Translated from the TrueBasic SIR program
# in "Calculus in Context" by Callahan and Hoffman.
#
# Translated by Barry Tolnas, tolnasb@evergreen.edu
#------------------------------------------------------
from visual.graph import *
t = 0 # time
S = 45400 # number of susceptibles
I = 2100 # number infected
R = 2500 # number recovered
deltat = 1 # time interval in days
#print initial values at time 0
print t, S, I, R
graph = gdisplay()
Scurve = gcurve()
Icurve = gcurve(color=color.red)
Rcurve = gcurve(color=color.green)
Tcurve = gcurve(color=(.7,.7,1)) # total of S+I+R
for k in range(50):
#compute rate of change
Sprime = -.00001 * S * I
Iprime = .00001 * S * I - I/14
Rprime = I/14
#compute amount of change (deltas)
deltaS = Sprime * deltat
deltaI = Iprime * deltat
deltaR = Rprime * deltat
#update variables
t = t + deltat
S = S + deltaS
I = I + deltaI
R = R + deltaR
#print out the results for this timestep
print t, S, I, R
Scurve.plot(pos=(t,S))
Icurve.plot(pos=(t,I))
Rcurve.plot(pos=(t,R))
Tcurve.plot(pos=(t,S+I+R))