數學建模學習工坊 / 03
SIR:機制如何成為動態
接觸假設與介入時機如何改變曲線?
學習目標與先備條件
耦合 ODE、陣列及混合槽的建模流程。
- 由接觸事件推導封閉人口 SIR 模型。
- 按易感比例解讀閾值。
- 核證不連續介入前後的人口守恆。
01 / 08 · 10 分鐘
觀察情境
由合成封閉人口 1000 人起步:990 人易感、10 人感染、0 人康復。接觸以速率概括,並非實測社交網絡。本課研究數學機制,不作疾病預測或公共衞生建議。
畫出各組間的箭嘴,指出哪些轉移被排除。
02 / 08 · 10 分鐘
提出問題
選擇輸出:感染高峰、高峰時間或累積康復人口。相同介入可能在不同指標有不同排名,比較介入日期前先固定指標。
寫出比較第 10 日與第 50 日介入的可檢驗問題。
03 / 08 · 15 分鐘
假設與變數
假設均勻混合、康復後永久免疫、人口無自然增減,各介入時段速率固定。頻率依賴傳播 βSI/N 的單位是人/日;密度依賴 βSI 模型會改變 β 的單位及人口尺度關係。
在模型卡記錄兩種傳播慣例的分別。
04 / 08 · 20 分鐘
建立模型
每次感染令 S 減一、I 加一;每次康復由 I 轉到 R,所以三條導數總和為零。感染初期增長的條件是 βS/(γN)>1,並非只要 β 為正。
推導三條速率,計算初始有效再生比值。
05 / 08 · 15 分鐘
設計算法
突然介入在已知時刻改變 β,積分要在該時刻切段,避免自適應步把不連續點略過。Euler 為一階,RK4 在足夠平滑的時段為四階;單靠守恆不足以證明準確。
解釋為何不準確的數值軌跡仍可以保持 S+I+R 守恆。
06 / 08 · 25 分鐘
Python 實驗
在 student_model 完成三組速率。比較參照人口與你的 Euler 感染軌跡;先固定介入規則把 h 減半,再另外改介入時機。
比較 h=1 與 0.5,再以 reduction=0.5 比較第 10 與第 50 日介入。
07 / 08 · 25 分鐘
驗證與修訂
設 β=0,易感人口應不變,感染者應按 I0 exp(−γt) 下降。過大的 Euler 步長可能令個別人口為負,總和卻仍守恆;這是離散化失敗,不是有意義的人口預測。
利用大步長與快速康復製造非負性檢查失敗,並解釋原因。
08 / 08 · 15 分鐘
撰寫結論
報告傳播慣例、介入時間表、指標與數值檢查;說明接觸異質性、外來感染或康復假設改變時,即使求解器相同,模型也已改變。
撰寫有適用範圍的結論,提出一項網絡或年齡分層延伸及驗證目標。
需要一點提示?
1. 概念提示
每項流量必須以一個負號及一個正號出現。
2. 數學/算法提示
incidence=beta*S*I/1000;recovery=gamma*I,依 S、I、R 次序回傳三條導數。
3. 參考實作導引
查看參考實作,繪圖前先核對導數總和。
先比較推理,再選擇是否套用。套用前會另存你目前的程式。
實驗協定:比較、失效與延伸
指定比較
先建立步長收斂證據,再改變介入時機。
失效實驗
大步長與快速康復可能破壞非負性,即使總人口仍守恆。
研究延伸
指定接觸矩陣,比較均勻混合與兩個年齡組模型。
PYTHON WORKBENCH
先預測,再執行。
實驗參數與種子
可直接修改以上程式,或開啟語法標示編輯器。起始碼的待完成部分會令相關檢查失敗;請依推導修正 student_model。
按啟動才下載運算環境;每次實驗使用獨立命名空間,最多 30 秒。
無法載入?仍可下載獨立 notebook,在安裝 NumPy、SciPy、Matplotlib 的 Python 環境執行。 參考 notebook
把這一課連回你的書架。
書籍章節(PDF 頁與印刷頁分列)
- Segel & Edelstein-Keshet — A Primer on Mathematical Models in Biology
6: Developing an infection model
PDF 122–123 · 印刷頁 103–104 - Mickens — Mathematical Modelling with Differential Equations
8: SIR models
PDF 176–177 · 印刷頁 161–162