Estoy tratando de crear un programa de simulación simple del modelo SIR-epidemias en java.Ecuaciones diferenciales en Java
Básicamente, SIR se define por un sistema de tres ecuaciones diferenciales:
S '(t) = - l (t) * S (t)
I' (t) = l (t) * S (t) - g (t) * I (t)
R '(t) = g (t) * I (t)
S - personas susceptibles, I - personas infectadas, R - personas recuperadas.
l (t) = [c * x * I (t)]/N (T)
c - número de contactos, x - infecciosidad (probabilidad de conseguir enfermo después del contacto con la persona enferma), N (t) - población total (que es constante).
¿Cómo puedo resolver tales ecuaciones diferenciales en Java? No creo que conozca ninguna forma útil de hacerlo, por lo que mi implementación produce basura.
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);
}
}
}
Le agradecería cualquier ayuda, muchas gracias de antemano!
las palabras 'simple' y 'Ecuaciones diferenciales' no pertenecen a la misma publicación ... – hvgotcodes
@hvgotcodes: ???!? adaptarse a ti mismo. lo que tiene no es tan complicado. algunos de nosotros sentimos lo mismo acerca de la criptografía, las expresiones regulares, los servicios web o el manejo de mensajes de UI. –
@jason. sí. Supongo que depende de a lo que se haya expuesto. Nunca tuve que tomar DEQ; el grado de CS en mi escuela requirió 2 cálculos numéricos en lugar de DEQ ... – hvgotcodes