Ich versuche, ein einfaches Simulationsprogramm des SIR-Epidemiemodells in Java zu erstellen.Differentialgleichungen in Java
Grundsätzlich wird SIR durch ein System von drei Differentialgleichungen definiert:
S '(t) = - l (t) * S (t)
I' (t) = L (t) * S (t) - g (t) * I (t)
R '(t) = g (t) * I (t)
S - anfällige Menschen, I - infizierte Menschen, R - erholte Menschen.
l (t) = [c * x * I (t)]/N (T)
c - Anzahl der Kontakte, x - Infektiosität (Wahrscheinlichkeit nach Kontakt mit kranken Menschen krank), N (t) - Gesamtbevölkerung (die konstant ist).
Wie kann ich solche Differentialgleichungen in Java lösen? Ich glaube nicht, dass ich einen brauchbaren Weg kenne, so dass meine Umsetzung Unsinn produziert.
public class Main {
public static void main(String[] args) {
int tppl = 100;
double sppl = 1;
double hppl = 99;
double rppl = 0;
int numContacts = 50;
double infectiveness = 0.5;
double lamda = 0;
double duration = 0.5;
double gamma = 1/duration;
for (int i = 0; i < 40; i++) {
lamda = (numContacts * infectiveness * sppl)/tppl;
hppl = hppl - lamda * hppl;
sppl = sppl + lamda * hppl - gamma * sppl;
rppl = rppl + gamma * sppl;
System.out.println (i + " " + tppl + " " + hppl + " " + sppl + " " + rppl);
}
}
}
ich sehr jede mögliche Hilfe, vielen Dank im Voraus zu schätzen wissen!
die Wörter 'einfache' und 'Differentialgleichungen' gehören nicht in den gleichen Beitrag ... – hvgotcodes
@hvgotcodes: ???!? passen Sie sich an. was er hat, ist nicht so kompliziert. Einige von uns fühlen sich in Bezug auf Kryptografie oder reguläre Ausdrücke oder Web-Services oder die Behandlung von UI-Nachrichten genauso. –
@jason. Ja. Ich schätze, es kommt darauf an, was man erlebt hat. Ich musste nie DEQ nehmen; Der CS-Abschluss an meiner Schule erforderte 2 numerische Berechnungen anstelle von DEQ ... – hvgotcodes