JavaでSIRエピデミックモデルの簡単なシミュレーションプログラムを作成しようとしています。
基本的に、SIRは次の3つの微分方程式のシステムによって定義されます
。S'(t)= --l(t)* S(t)
I'(t)= l(t)* S(t)--g(t)* I(t)
R'(t)= g(t)* I(t)
S-感受性の高い人、I-感染した人、R-回復した人。
l(t)= [c * x * I(t)] / N(T)
c-接触の数、x-感染性(病気の人との接触後に病気になる確率)、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);
}
}
}
よろしくお願いします。よろしくお願いします。