これはsirsモデルについてのプログラムです。この形を持ったままsirsに書き換えたいです。
どうか力を貸してください。
import
1from matplotlib import rcParams 2rcParams['font.family'] = 'sans-serif' 3rcParams['font.sans-serif'] = ['Yu Gothic'] 4 5import matplotlib.pyplot as plt 6from scipy. integrate import odeint 7 8 9#sirモデルの常微分方程式 10 11def SIR_equation(v,t,β,γ): 12 S, I, R =v 13 dSdt=-β*S*I 14 dIdt=β*S*I-γ*I 15 dRdt=γ*I 16 return [dSdt,dIdt,dRdt] 17for β in np.linspace(0.10,0.20,11): 18 for γ in np.linspace(0.10,0.20,11): 19 20 21#初期値設定 22 S0=.999999928 23 I0=.000000071 24 R0=0.0 25#係数決定 26 27 28#0 ≦t ≦100のあいだを1000分割 29 time_list=np.linspace(1,150,150) 30 31 var_list=odeint( 32 SIR_equation, 33 [S0,I0,R0], 34 time_list, 35 args=(β,γ) 36) 37#微分方程式をここまでで解いた 38#var_listにはS、I、Rのそれぞれの時間に対する結果が配列で入っているので、 39#それらを分けて配列(_1ist)に収納 40 S_list = var_list [:,0] 41 I_list = var_list [:,1] 42 R_list = var_list [:,2] 43 tot_list = S_list + I_list + R_list 44 45#精題にプロットできるよう色々工夫してみる 46 47 plt.xlabel("time") 48 plt.xlim(1,150) 49 plt.ylim(0,0.0004) 50 plt.ylabel("population ratio") 51 plt.fill_between(time_list, tot_list,label ="population",alpha = 0.5) 52 #plt.fill_between(time_list, S_list,label = "Susceptible",alpha = 0.5) 53 #plt.fill_between(time_list, R_list,label = "Recovered",alpha = 0.5) 54 plt.fill_between(time_list, I_list,label="Infected",alpha = 0.5) 55 plt.fill_between(time_list, I_list+R_list,label="Infected(cumulative)",alpha = 0.5) 56 57 58 plt.legend(loc ='center right') 59 plt.title(r"SIR model ($\beta=%.2f,\gamma=%.2f$)"%(β,γ)) 60 plt.savefig(r"SIR_model_beta=%.2f_gamma=%.2f.png"%(β,γ)) 61 plt.close()
コードはコードブロックで囲んでください。
https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif
すみません。今回初めて使ったのでよくわからなくて。申し訳ないです
こちらでは難しいでしょうか??
何をなさりたいのか説明が不十分ですよく整理なさってください
「Pythonでのsirsモデル」では伝わらないです
PythonでSIRモデルによる微分方程式を解いているがSIRモデルをSIRSモデルに変えたい
ということかと思いますが、Pythonが得意でもSIRSモデルが分かる方となると絞られるのでSIR、SIRSとは何かを示した方が回答可能性が高まります。
「コード
```これはsirsモデルについてのプログラムです。この形を持ったままsirsに書き換えたいです。
どうか力を貸してください。」
コードの張り付け方が誤っており、説明書きも適切な個所でないのでコードが読みづらくなっています。Teratailの記法をご確認下さい。
「time_list=np.linspace(1,150,150)」は「0 ≦t ≦100のあいだを1000分割」にならないと思います。
「_1ist」は「_list」の誤記ですね。
「精題にプロット」も意味が分かりません。
誤記、問題設定等 今一度整理なさってください。
:参考サイトなのですが、使えますでしょうか?
https://rpubs.com/ktgrstsh/tokyor84
あなたの回答
tips
プレビュー