Epidemiology: The SIR model: Difference between revisions

From JSXGraph Wiki
No edit summary
No edit summary
Line 29: Line 29:
var R = brd.createElement('turtle',[],{strokeColor:'green',strokeWidth:3});
var R = brd.createElement('turtle',[],{strokeColor:'green',strokeWidth:3});
              
              
var xaxis = brd.createElement('axis', [[0,0], [1,0]], {});
var yaxis = brd.createElement('axis', [[0,0], [0,1]], {});
           
var s = brd.createElement('slider', [[0,-0.5], [10,-0.5],[0,0.03,1]], {name:'s'});
brd.createElement('text', [12,-0.5, "initially infected population rate"]);
var beta = brd.createElement('slider', [[0,-0.6], [10,-0.6],[0,0.5,1]], {name:'β'});
brd.createElement('text', [12,-0.6, "β: infection rate"]);
var gamma = brd.createElement('slider', [[0,-0.7], [10,-0.7],[0,0.3,1]], {name:'γ'});
brd.createElement('text', [12,-0.7, "γ: recovery rate"]);


brd.createElement('text', [12,-0.4,
        function() {return "S(t)="+brd.round(S.pos[1],3) +", I(t)="+brd.round(I.pos[1],3) +", R(t)="+brd.round(R.pos[1],3);}]);
           
S.hideTurtle();
I.hideTurtle();
R.hideTurtle();
           
function clearturtle() {
  S.cs();
  I.cs();
  R.cs();
  S.hideTurtle();
  I.hideTurtle();
  R.hideTurtle();
}
           
function run() {
  S.setPos(0,1.0-s.Value());
  R.setPos(0,0);
  I.setPos(0,s.X());
               
  delta = 0.1; // global
  t = 0.0;  // global
  loop();
}
           
function turtleMove(turtle,dx,dy) {
  turtle.lookTo([1.0+turtle.pos[0],dy+turtle.pos[1]]);
  turtle.fd(dx*Math.sqrt(1+dy*dy));
}
           
function loop() {
  var dS = -beta.Value()*S.pos[1]*I.pos[1];
  var dR = gamma.Value()*I.pos[1];
  var dI = -(dS+dR);
  turtleMove(S,delta,dS);
  turtleMove(R,delta,dR);
  turtleMove(I,delta,dI);
               
  t += delta;
  if (t<20.0 && I.pos[1]) {
    setTimeout(loop,10);
  }
}
</script>
</script>
</html>
</html>

Revision as of 17:40, 21 January 2009

Simulation of differential equations with turtle graphics using JSXGraph.

SIR model without vital dynamics

A single epidemic outbreak is usually far more rapid than the vital dynamics of a population, thus, if the aim is to study the immediate consequences of a single epidemic, one may neglect the birth-death processes. In this case the SIR system described above can be expressed by the following set of differential equations:

[math]\displaystyle{ \frac{dS}{dt} = - \beta I S }[/math]
[math]\displaystyle{ \frac{dR}{dt} = \gamma I }[/math]
[math]\displaystyle{ \frac{dI}{dt} = -(dS+dR) }[/math]

The lines in the JSXGraph-simulation below have the following meaning:

* Blue: Rate of susceptible population
* Red: Rate of infected population
* Green: Rate of recovered population (which means: immune, isolated or dead)