SIR 모델의 일본어 표시
10228 단어 코로나 바이러스SIR 모델Python3matplotlib
중학생도 알 수 있는 SIR 모델
sir01.py
#! /usr/bin/python
# ------------------------------------------------------------------
import matplotlib.pyplot as plt
import numpy as np
import sys
# ------------------------------------------------------------------
def next_state(beta,nu,ss, ii, rr):
beta_ss_ii = beta * ss * ii
delta_ss = - beta_ss_ii
delta_ii = beta_ss_ii - nu * ii
ss = ss + delta_ss
ii = ii + delta_ii
if ss < 0:
ss = 0
if 1.0 < ii:
ii = 1.0
rr = 1.0 - ss - ii
return ss, ii, rr
#
# ------------------------------------------------------------------
def main():
beta = 0.5
nu = 0.3
period = 100
sys.stderr.write("beta = %f\n" % beta)
sys.stderr.write("nu = %f\n" % nu)
results = []
ii = 0.01
rr = 0
ss = 1 - ii - rr
l_s = [ss]
l_i = [ii]
l_r = [rr]
results.append([ss,ii,rr])
r0 = beta*ss/nu
print(ss, ii, rr)
for t in range(period):
ss, ii, rr = next_state(beta,nu,ss, ii, rr)
results.append([ss,ii,rr])
l_s.append(ss)
l_i.append(ii)
l_r.append(rr)
print("R0:{}".format(r0))
plt.rcParams["font.family"] = "TakaoExGothic"
# plt.rcParams["font.family"] = "IPAGothic"
plt.figure()
plt.title("R0:{}".format(format(r0,".3f")))
plt.xlabel('時間')
plt.ylabel('比率')
x = np.linspace(0, 100, period+1)
plt.plot(x, l_s, label="未感染者")
plt.plot(x, l_i, label="感染者")
plt.plot(x, l_r, label="回復者")
plt.legend()
plt.show()
#
# ------------------------------------------------------------------
main()
# ------------------------------------------------------------------
글꼴 지정은 TakaoExGothic 또는 IPAGothic 모두 괜찮습니다.
Arch Linux에서 확인했습니다.
$ uname -a
Linux iwata 5.6.10-arch1-1 #1 SMP PREEMPT Sat, 02 May 2020 19:11:54 +0000 x86_64 GNU/Linux
$ python --version
Python 3.8.2
Reference
이 문제에 관하여(SIR 모델의 일본어 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ekzemplaro/items/ccbdc2c0436feea6dbd6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)