數學建模學習工坊 / 06
擴散模型:平滑圖像的數值陷阱
空間解像度與邊界如何改變擴散?
學習目標與先備條件
導數、ODE 時間步進與線性系統。
- 由通量平衡推導擴散。
- 把數值穩定比值連到步長及網格大小。
- 使用符合邊界的總量檢查與網格收斂。
01 / 08 · 10 分鐘
觀察情境
一米長區域包含合成濃度場。固定零端點時用 sin(πx),週期邊界時用 1+0.5 cos(2πx)。兩種模態都有已知時間演化,可在處理實測空間資料前用作核證。
畫出兩種初始場,解釋兩種邊界如何交換或保存總物質。
02 / 08 · 10 分鐘
提出問題
分開物理問題『場擴散多快』與數值問題『網格有多接近 PDE』。加密網格改變解像度,不改變物理擴散率;只看動畫無法分辨兩者。
選網格前先定義誤差範數與比較時間。
03 / 08 · 15 分鐘
假設與變數
假設一維、擴散率固定、沒有源項,並指定邊界。Fick 通量為 J=−D ux;把局部累積積分到格子,得到流入減流出平衡。固定端點容許流失,週期邊界則必須守恆總量。
記錄 D 的單位,指出各邊界適用哪種總量檢查。
04 / 08 · 20 分鐘
建立模型
結合 ut=−Jx 與 Fick 定律得 ut=Duxx,以中心二階差分近似 uxx。固定端點的更新導數設為零,因為數值已指定;週期差分跨邊相接,而且不重複最後網格節點。
以 u=[0,1,4,9,0]、dx=0.1 手算差分模板,比較兩種邊界。
05 / 08 · 15 分鐘
設計算法
此一維中心擴散格式的 Forward Euler 需要 λ≤1/2;dx 減半就約要把 dt 除以四。Backward Euler 解線性系統,免除此穩定限制,但仍有時間離散誤差;穩定不等於準確。
推導 Fourier 模態的放大倍率,預測最危險的波長。
06 / 08 · 25 分鐘
Python 實驗
完成 student_model 的空間算子。框架用整數步恰好到達指定終點,因此有效 λ 可能略低於輸入比值。比較你的顯式曲線、精確模態及 Backward Euler。
以 λ=0.4 執行 20 及 40 格,再改週期邊界,記錄誤差與總量。
07 / 08 · 25 分鐘
驗證與修訂
把 λ 增至 1/2 以上。平滑低頻初始模態可能暫時看似合理,因不穩定高頻分量最初接近捨入誤差;穩定性檢查應在圖像劇變前已失敗。較長運行或擾動模態可揭露不穩定。
解釋為何好看的結果不能推翻穩定條件失敗;區分邊界流失與數值洩漏。
08 / 08 · 15 分鐘
撰寫結論
報告 PDE、邊界、初始場、網格、有效步長與誤差。單一精確模態的收斂只核證有限條件;反應擴散延伸需要新增非負性與平衡檢查,不能直接借用純擴散結論。
寫出收斂表,提出一個反應項及其極限情況測試。
需要一點提示?
1. 概念提示
內部節點用 u[j+1]−2u[j]+u[j−1],分母是 dx²。
2. 數學/算法提示
週期鄰居用 np.roll;固定邊界只更新 1:-1。
3. 參考實作導引
長時間模擬前,先在手算網格追蹤參照差分模板。
先比較推理,再選擇是否套用。套用前會另存你目前的程式。
實驗協定:比較、失效與延伸
指定比較
固定 λ 比較 20 與 40 格,以精確模態比較顯式及 Backward Euler。
失效實驗
設 λ=1.0;即使低頻曲線暫時平滑,穩定條件仍失敗。
研究延伸
加入反應項,探索圖案形成前先測試均勻平衡點。
PYTHON WORKBENCH
先預測,再執行。
實驗參數與種子
可直接修改以上程式,或開啟語法標示編輯器。起始碼的待完成部分會令相關檢查失敗;請依推導修正 student_model。
按啟動才下載運算環境;每次實驗使用獨立命名空間,最多 30 秒。
無法載入?仍可下載獨立 notebook,在安裝 NumPy、SciPy、Matplotlib 的 Python 環境執行。 參考 notebook
把這一課連回你的書架。
課文與寫作 Notes
書籍章節(PDF 頁與印刷頁分列)
- Banerjee — Mathematical Modeling: Models, Analysis and Applications
4: Spatial models using PDEs
PDF 134–135 · 印刷頁 111–112