Epidemie und Mathematik
Aus Wiki1
(Unterschied zwischen Versionen)
Zeile 18: | Zeile 18: | ||
brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-0.1, 0.5, 1.1, -1.1], grid: true, axis:true}); | brd = JXG.JSXGraph.initBoard('jxgbox', {boundingbox:[-0.1, 0.5, 1.1, -1.1], grid: true, axis:true}); | ||
- | Pop = brd.createElement('slider',[[0.10,-0.3],[0.5,-0.3],[ | + | Pop = brd.createElement('slider',[[0.10,-0.3],[0.5,-0.3],[1,60,200]],{name:Mio. Einwohner',snapWidth:1}); |
id = brd.createElement('slider',[[0.10,-0.4],[0.5,-0.4],[0,14,30]],{name:'Infektionsdauer in Tagen',snapWidth:1}); | id = brd.createElement('slider',[[0.10,-0.4],[0.5,-0.4],[0,14,30]],{name:'Infektionsdauer in Tagen',snapWidth:1}); | ||
ir = brd.createElement('slider',[[0.10,-0.5],[0.5,-0.5],[0,5,10]],{name:'Infektionrate pro 100 Kontakte',snapWidth:1}); | ir = brd.createElement('slider',[[0.10,-0.5],[0.5,-0.5],[0,5,10]],{name:'Infektionrate pro 100 Kontakte',snapWidth:1}); | ||
- | pit0 = brd.createElement('slider',[[0.10,-0.6],[0.5,-0.6],[0, | + | pit0 = brd.createElement('slider',[[0.10,-0.6],[0.5,-0.6],[0,10,50]],{name:'% der Einwohner',snapWidth:1}); |
KT = brd.createElement('slider',[[0.10,-0.7],[0.5,-0.7],[0,50,100]],{name:'unterschiedliche Kontakte je Infizierter pro Tag',snapWidth:1}); | KT = brd.createElement('slider',[[0.10,-0.7],[0.5,-0.7],[0,50,100]],{name:'unterschiedliche Kontakte je Infizierter pro Tag',snapWidth:1}); | ||
T = brd.createElement('slider',[[0.10,-0.8],[0.5,-0.8],[0,60,100]],{name:'Tage',snapWidth:1}); | T = brd.createElement('slider',[[0.10,-0.8],[0.5,-0.8],[0,60,100]],{name:'Tage',snapWidth:1}); | ||
function iwahr(x){ | function iwahr(x){ | ||
- | p= | + | p=Pop.Value()*1000000; |
- | it0= | + | it0=p*pit0.Value()/100; |
ipr=1+ir.Value()*KT.Value()/100; | ipr=1+ir.Value()*KT.Value()/100; | ||
return ir.Value()*Math.max(p-it0*(Math.pow(ipr,x)-Math.pow(ipr,x-id.Value())),0)/p; | return ir.Value()*Math.max(p-it0*(Math.pow(ipr,x)-Math.pow(ipr,x-id.Value())),0)/p; | ||
Zeile 33: | Zeile 33: | ||
function infektionen(t){ | function infektionen(t){ | ||
- | it0= | + | it0=p*pit0.Value()/100; |
ipr=1+iwahr(t-1)*KT.Value()/100; | ipr=1+iwahr(t-1)*KT.Value()/100; | ||
- | return Math.min( | + | return Math.min(Pop.Value()*1000000,it0*(Math.pow(ipr,t)-Math.pow(ipr,t-id.Value()))); |
} | } | ||
Zeile 51: | Zeile 51: | ||
var l_Y=brd.create('line',[py1,py2],{strokeColor:'blue',strokeWidth:1,dash:1}) | var l_Y=brd.create('line',[py1,py2],{strokeColor:'blue',strokeWidth:1,dash:1}) | ||
- | des0 = brd.createElement('text',[0.1,-1,function(){ return Math.round(infektionen(g.X()*T.Value())*10)/10+" Infizierte nach "+Math.round(g.X()*T.Value()*10)/10+" Tagen bei "+Math.round( | + | des0 = brd.createElement('text',[0.1,-1,function(){ return Math.round(infektionen(g.X()*T.Value())*10)/10+" Infizierte nach "+Math.round(g.X()*T.Value()*10)/10+" Tagen bei "+Math.round(Pop.Value()*1000000/10)*10+" Einwohner";}],{strokeColor:'black',fontSize:'14px'}); |
</jsxgraph> | </jsxgraph> |
Version vom 14:08, 31. Mär. 2020
MIt der folgenden Grafik kann der Einfluss verschiedener Faktoren auf die Ausbreitung einer Infektion visualisiert werden. Mit den Schiebereglern können folgende Vorgaben definiert werden:
- Gesamtpopulation (in Exponentialschritten)
- Dauer der Infektiosität
- Infektionsrate als Infektionen, die ein Infizierter je 100 Kontakten verursacht
- Zahl der Anfangsinfizierten (in Exponentialschritten - 1, 10, 100, 1000, 10000, 100000, 1000000)
- durchschnittliche Kontakte pro Tag eines Infizierten mit unterschiedlichen Personen
- Betrachteter Zeitraum in Tagen
Die Kurve zeigt den Verlauf der Infizierten über die Zeit, wobei sich die Infektionwahrschenlichkeit mit zunehmender Zahl Infizierter verringert. Mit dem schwarzen Messpunkt kann die Kurve abgelesen werden.
Reduzierung der Kontakte führt zur Verringerung der Infektionen - ob auch zur Reduzierung von schweren Krankheitsverläufen hängt dagegen von ganz anderen Randbedingungen ab.