SIR传染病模型动态模拟 by Juan Carlos Ponce Campuzano

SIR传染病模型动态模拟 by Juan Carlos Ponce Campuzano
几何画板及绘图内容加载中,请稍等……
2019-09-16 13:19
所属专题 SCIE1000
① 本范例通过GeoGebra动态演示经典的SIR传染病模型,展示易感者(S)、感染者(I)和康复者(R)三类人群数量随时间变化的曲线。② 核心数学概念是常微分方程组(S'=-βSI/N,I'=βSI/N-γI,R'=γI)的数值求解,涉及导数、微分方程、参数变化对系统演化的影响。③ 作图要点:使用NSolveODE命令数值求解微分方程,通过SelectedIndex和Element提取解的分量,利用Sequence和If生成曲线,配合Textfield和按钮(button1、button2、button3)交互调整参数(如传播率a、恢复率b、初始感染者I_0),并用Ray、Length等辅助显示比例和动态标记。④ 适合高中至大学阶段的数学建模、微分方程或生物数学课程,也可用于公共卫生科普,直观理解传染病传播规律和干预措施的效果。

GeoGebra 命令及参数

  1. SelectedIndex(LN) → index
  2. Element(LN, index) → N
  3. NSolveODE({S', I', R'}, 0, {S_0, I_0, R_0}, 13) → sol_1, sol_2, sol_3
  4. Length(sol_1) → len
  5. Ray((x(A), 0), A) → r
  6. If(N ≟ 100, 1, If[N ≟ 10000, 10, 100]) → ratio
  7. Sequence((RandomUniform[0, p], RandomUniform[0, p]), i, 1, N / ratio) → pSr
  8. Sequence((RandomUniform[0, p], RandomUniform[0, p]), i, 1, N / ratio) → pIr
  9. Sequence((RandomUniform[0, p], RandomUniform[0, p]), i, 1, N / ratio) → pRr
  10. Sequence(Vector[(0, 0), Element[pSr, i]], i, 1, N / ratio) → L_1
  11. Sequence(Vector[(0, 0), Element[pIr, i]], i, 1, N / ratio) → L_2
  12. Sequence(Vector[(0, 0), Element[pRr, i]], i, 1, N / ratio) → L_3
  13. Sequence(Translate[pic1, Vector[Element[L_1, i]]], i, 1, y1 / ratio) → L_4
  14. Sequence(Translate[pic2, Vector[Element[L_2, i]]], i, 1, y2 / ratio) → L_5
  15. Sequence(Translate[pic3, Vector[Element[L_3, i]]], i, 1, y3 / ratio) → L_6
  16. Textfield(a) → InputBox1
  17. Textfield(b) → InputBox2
  18. Textfield(I_0) → InputBox3
  19. If(N ≟ 100, 100, If[N ≟ 10000, 10000, 100000]) → maxval