2021年11月26日

用python做擴散作用的建模

 在之前的課程裡,我們簡要地以這篇文章「賭博、擴散與擴散實驗」介紹了擴散作用的基本原理。


在學習過程中,我利用colab撰寫python程式進行擴散作用的建模

https://colab.research.google.com/drive/1gL6b-KyEaIiXmm2_4vMAxN4ZyhBvc_48?usp=sharing


每隔一段時間(假設一秒),丟一次只有兩面的骰子。骰子為1,就向右走,骰子為2就向左走
經過N段時間之後(意即丟N次骰子之後),粒子會移動到距離原點多遠的地方?

每次做一組實驗,都會走到不同的地方


如果今天重複做多組實驗呢?例如做了一千組實驗,每個實驗都是丟10000次骰子,那麼大部分會走到哪裡?大部分都只會走到正負100以內的地方,平均移動距離約是80。


用直方圖來看,會更清楚這個趨勢。我們大致上知道丟 10000次骰子,平均可以移動到80左右的部份。




如果我們再做更複雜的實驗,也更完整的實驗,看看N和平均移動距離的關係呢?
看看M次[丟N次骰子]的平均移動距離

例如:
20次[丟1次骰子]的平均移動距離
20次[丟2次骰子]的平均移動距離
...
20次[丟400次骰子]的平均移動距離

然後我們把數據畫出圖,就會是這樣。雖然丟骰子越多次,有機會移動到比較遠的地方。但是會發現次數和距離並不是成正比。前面有說過我們當作每隔一秒丟一次骰子,所以你可以把骰骰子的次數當作時間。換句話說,就是時間和距離並不是正比的關係。



在一維空間的擴散現象就是這樣,在短距離的擴散是快速的,但要移動到更長的距離,就要花更長更長的時間。

由這個實驗去看看我們前篇文章所說的果凍細胞的擴散實驗。如果要讓細胞能快速用擴散作用獲得養分,那麼細胞就不能太大顆。越小顆才能越有效率。