SEIR model

SEIR model

by pbuzin

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jsxgraph/0.99.7/jsxgraphcore.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jsxgraph/0.99.7/jsxgraph.css">
<div id="jxgbox" class="jxgbox" style="width:600px; height:600px;">
</div>

JavaScript

board = JXG.JSXGraph.initBoard('jxgbox', {
  boundingbox: [-5, 105, 105, -5],
  axis: true,
  grid: false,
  showCopyright: false
});



alpha_slider = board.createElement('slider', [
  [10.0, 95.5],
  [20.0, 95.5],
  [1.0, 5.0, 10.0]
], {
  name: '&alpha;',
  strokeColor: 'black',
  fillColor: 'black'
});

aplha_text = board.createElement('text', [10, 92.5, "alpha"], {
  fixed: true
});

beta_slider = board.createElement('slider', [
  [30.0, 95.5],
  [40.0, 95.5],
  [0.0, 0.75, 1.0]
], {
  name: '&beta;',
  strokeColor: 'black',
  fillColor: 'black'
});
beta_text = board.createElement('text', [30, 92.5, "beta"], {
  fixed: true
});

gamma_slider = board.createElement('slider', [
  [50.0, 95.5],
  [60.0, 95.5],
  [0.0, 0.10, 1.0]
], {
  name: '&gamma;',
  strokeColor: 'black',
  fillColor: 'black'
});

gamma_text = board.createElement('text', [50, 92.5, "gamma"], {
  fixed: true
});


mju_slider = board.createElement('slider', [
  [70.0, 95.5],
  [80.0, 95.5],
  [0.0, 0.01, 1.0]
], {
  name: '&#956',
  strokeColor: 'black',
  fillColor: 'black'
});

mju_text = board.createElement('text', [70, 92.5, "mju"], {
  fixed: true
});

startSusceptible = board.createElement('glider', [0, 95, board.defaultAxes.y], {
  name: 'Susceptible',
  strokeColor: 'blue',
  fillColor: 'blue'
});
startExposed = board.createElement('glider', [0, 0, board.defaultAxes.y], {
  name: 'Exposed',
  strokeColor: 'black',
  fillColor: 'black'
});

startInfected = board.createElement('glider', [0, 5, board.defaultAxes.y], {
  name: 'Infected',
  strokeColor: 'red',
  fillColor: 'red'
});

startRecovered = board.createElement('glider', [0, 0, board.defaultAxes.y], {
  name: 'Recovered',
  strokeColor: 'green',
  fillColor: 'green'
});

var T = 100;
var N = 100;
var g3 = null;
var g4 = null;
var g5 = null;
var g6 = null;


function solve_ode(x0, I, T, f) {
  var data = [x0];
  var dt = (I[1] - I[0]) / T;
  for (let i = 1; i < T; ++i) {
    var dS_dt = data[i - 1][0] + dt * f(0, data[i - 1])[0];
 ...