Mo 23. Mär 2020, 05:49

Das ist die deutschsprachige Version.
An english translation is available at en.yukterez.net


(* pandemic.yukterez.net *)
T = 300; (* Zeitraum *)
E0 = 83000000; (* Einwohner *)
I0 = 66; (* Infizierte *)
R0 = 0; (* Geheilte *)
b0 = 30/100; (* initiale Transmissionsrate *)
b1 = 30/100; (* finale Transmissionsrate *)
tu = 15; (* Zeitspanne der ungehinderten Ausbreitung *)
tb = 5; (* Zeitspanne b0 -> b1 *)
d = 30; (* Krankheitsdauer *)
h = 2/10; (* Hospitalisierungsrate *)
x = 3/100; (* Sterberate *)
f = (b0-b1)/tb; (* Änderung der Transmissionsrate *)
τ = t-tu;
B = If[b0==b1, b0, If[b1<b0, Max[b1, b0-f τ], Min[b1, b0-f τ]]];
b = Interpolation[Table[If[t<tu, b0, B], {t, 0, T, 1}]];
i0 = I0/E0; (* Fraktion der Angesteckten *)
r0 = R0/E0; (* Fraktion der Geheilten *)
s0 = 1-i0-r0; (* Fraktion der Ansteckbaren *)
DGL = {
s'[t] == -s[t] b[t] i[t], (* Änderungsrate der noch Gesunden *)
i'[t] == s[t] b[t] i[t]-i[t]/d, (* Änderungsrate der Infizierten *)
r'[t] == i[t]/d, (* Änderungsrate der Geheilten *)
s[0] == s0,
i[0] == i0,
r[0] == r0};
sol = Quiet[NDSolve[DGL, {s, i, r}, {t, 0, T+tu},
WorkingPrecision -> 48, MaxSteps -> Infinity,
InterpolationOrder -> All]];
max = Quiet[FindMaximum[i[t] /. sol, {t, 1}]]
Plot[{
Evaluate[E0 s[t] /. sol], (* noch gesund, rot *)
Evaluate[E0 i[t] /. sol], (* erkrankt, blau *)
Evaluate[h E0 i[t] /. sol], (* hospitalisiert, schwarz *)
Evaluate[(1-x) E0 r[t] /. sol], (* wieder gesund, grün *)
Evaluate[x E0 r[t] /. sol] (* gestorben, grau *)
}, {t, 0, T},
Frame -> True,
AxesOrigin -> {0, 0},
ImageSize -> 380,
PlotRange -> {All, {0, E0}},
ImagePadding -> {{50, 1}, {20, 10}},
PlotStyle -> {Red, Blue, Black, Green, Gray},
GridLines -> {{t/.max[[2]]}, {E0 max[[1]], E0/2}}]
Framed[Grid[Join[{{
"Tag ",
"Krank (N) ", "Krank (+%) ", "Tot ",
"Spital ", "Gesund ", "Genesen "
}}, {{" ", " ", " ", " ", " "}},
Table[{t,
Round[Evaluate[E0 i[t] /. sol][[1]]],
100 N[Evaluate[(i[t]/i[Max[0, t-1]]-1) /. sol][[1]], 4],
Round[Evaluate[x E0 r[t] /. sol][[1]]],
Round[Evaluate[h E0 i[t] /. sol][[1]]],
Round[Evaluate[E0 s[t] /. sol][[1]]],
Round[Evaluate[(1-x) E0 r[t] /. sol][[1]]]},
{t, 0, T, 1}]],
Alignment -> Left]]

Mo 23. Mär 2020, 05:49
Di 24. Mär 2020, 02:38



Bei iphpbb3.com bekommen Sie ein kostenloses Forum mit vielen tollen Extras
Forum kostenlos einrichten - Hot Topics - Tags
Beliebteste Themen: WM, Uni, Web, Bahn, Rap
Impressum | Datenschutz