Я пытаюсь создать простую симуляционную программу модели SIR-эпидемий в java.Дифференциальные уравнения в Java
В основном, SIR определяется системой трех дифференциальных уравнений:
S '(T) = - L (T) * S (т)
I' (т) = л (т) * S (т) - г (т) * я (т)
R ', (т) = г (т) * я (т)
S - восприимчивые люди, я - инфицированные люди, R - выздоровел людей.
л (т) = [с * х * я (т)]/N (T)
с - число контактов, х - infectiveness (вероятность заболеть после контакта с больным человеком), N (t) - общая популяция (постоянная).
Как я могу решить такие дифференциальные уравнения в Java? Я не думаю, что знаю какой-либо полезный способ сделать это, поэтому моя реализация вызывает мусор.
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);
}
}
}
я бы очень признателен за любую помощь, большое спасибо заранее!
слова «простые» и «дифференциальные уравнения» не входят в одно сообщение ... – hvgotcodes 2010-12-05 02:58:09
@hvgotcodes: ???!? одевают. то, что у него есть, не так уж сложно. некоторые из нас так же относятся к криптографии, регулярным выражениям или веб-службам или обработке сообщений пользовательского интерфейса. – 2010-12-05 03:13:13