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: 'α',
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: 'β',
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: 'γ',
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: 'μ',
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];
...