電腦模擬

又叫，係科學上嘅一種研究方法。研究者會整個數學模型出嚟模擬想研究嘅現象，個模型會講明個現象涉及邊啲變數同埋呢啲變數之間嘅方程式係點，跟住個研究者就會將個模型寫成電腦程式嚟行，睇吓「如果個數學模型正確，會發生乜嘢事」，做到按理論知識預測現實世界嘅現象。除此之外，電腦模擬通常會配合埋科學視覺化技術，將模擬結果以圖像形式呈現出嚟。

舉個簡單例子說明，群動係電腦模擬嘅一個出名例子，想像家陣有一大柞個體一齊移動，途中佢哋會守三條規則：分隔－唔好撞到隔離嘅其他個體；順向－將自己方向對準周圍其他個體嘅平均；凝聚－將自己置於周圍其他個體嘅平均嘅位置。用電腦模擬嘅話，個程式會類似噉：
  設  件物件；
  設呢  件物件嘅初始位置
  設 = 0；
  While  未到某個值，
    Foreach 物件
      計「如果呢件物件跟嗰三條法則郁，佢嘅新位置會响邊」；
    顯示出每件物件嘅新位置；
     上升 1；
於是研究者就能夠知道「如果群動嘅數學模型正確，會發生乜嘢事」。事實表明咗，群動模型可以準確噉預測某啲自然現象，例如係一大群雀鳥一齊飛嗰陣成個雀群成嘅形態。

電腦模擬係科學運算不可或缺嘅一部份，喺物理學、化學同生物學等嘅自然科學上都會用到。除此之外，電腦模擬仲有俾人用落去社會科學上，例如用博弈論模擬社會，而工程學都有用到電腦模擬，例如模擬「如果部機械用噉嘅設計，部機械嘅效率會係咁高咁高」。

以下嘅內容，假設讀者已經有齊嗮基本嘅程式編寫知識。

哲學背景 

電腦模擬係廿一世紀初嘅一種科研方法。科學係用科學方法嚟追求知識，而科學方法涉及以下嘅步驟：
根據手上已知係真嘅事實，諗一啲理論出嚟，而為求精確，呢啲理論通常都想係用數學模型嘅方式表達嘅；
跟手就靠邏輯性嘅思考，去諗吓呢柞理論會做點樣嘅預測；
然後就做實驗同觀察嚟攞數據，驗證吓個理論嘅預測係咪真確；
如果數據顯示，個理論係做唔到準確嘅預測嘅話，就要一係根據攞到嘅數據睇吓個理論要點改先可以令佢做到準確啲嘅預測，一係就要諗新理論取代舊理論。
用電腦模擬做科研想要做嘅就係幫手預測複雜系統嘅行為：原則上，「一個理論會作出乜嘢預測」呢一點可以由個研究者齋靠諗嚟做得到，例子可以睇吓好似基本牛頓力學入面嗰啲相對簡單嘅物理定律－呢啲定律吓吓都係一條式得嗰幾個變數，研究者可以輕易噉用人手計出「根據呢條定律，如果變數  嘅數值係咁多咁多，變數  嘅數值應該會係咁多咁多」。不過當研究緊嗰樣現象有返咁上下複雜嗰陣，「齋靠個研究者用腦諗」好多時就會難令人信服，例如係群動噉，好難說服人話「齋靠研究者用腦諗，就會準確計到群動三定律會出點嘅樣嘅移動」。於是研究者就將自己個理論編寫成一個電腦程式，然後再行呢個程式，睇吓個程式會引致乜嘢結果－呢啲結果就會係佢個理論會作出嘅預測。

電腦模擬係喺廿世紀嗰陣同電腦一齊冒起嘅：科學研究呢家嘢喺中世紀經已有，當時要計數淨係有得用人手計，而好似萬有引力定律等相對簡單嘅科學理論要用人手計並唔難，但一研究好似係群動呢啲涉及閒閒地幾廿個個體隨時間分別噉變化嘅現象，用人手計就會好撈絞；不過廿世紀初出咗一樣好重要嘅發明－電腦，電腦係運算機械，即係能夠用快過人手好多嘅速度做大量嘅運算，所以電腦嘅出現令到人類能夠計一啲以前計唔到嘅數學模型，引起咗科學家用電腦模擬嚟做科研。到咗廿一世紀初，電腦模擬經已成為咗科研一個不可或缺嘅部份。

基本程式 

喺最基本上，一個做電腦模擬嘅程式可以想像成以下噉嘅虛擬碼：
  初始化；
  設 = 0；
  While  未到某個值，
    按個理論嘅數學模型，計吓個現象跟住會變成點； 係一個函數。
    顯示出個現象變成咗點嘅樣；
     上升 1；
呢個過程會俾研究者視覺化噉睇到「如果嗰個數學模型成立，噉會見到啲乜嘢現象」呢一樣資訊。除此之外，一個電腦模擬仲可以將模擬途中嘅數據記低，例如記住「變數  喺每個時間點嘅數值」，跟手再將呢啲數據畫成圖表，即係例如 Y 軸表示變數  嘅數值，X 軸表示時間，畫一條線出嚟。
t=0:    y = 0
t=1:    y = 0
t=2:    y = 10
t=3:    y = 30
t=4:    y = 60
t=5:    y = 100
...

主要分類 
電腦模擬可以按多種準則分類，包括咗係：

有冇隨機性 

隨機性定決定性－前者指有隨機性喺入面嘅電腦模擬，例如個程式其中一行碼係 rand(1,10);，將模擬緊嗰個現象想像成有隨機性喺入面，而後者就指冇呢啲隨機性嘅電腦模擬。

蒙地卡羅方法係一種出名嘅隨機性模擬做法。蒙地卡羅方法係用隨機性嘅做法應付決定性系統嘅演算法，源於 1940 年代：如果話一個系統係「決定性」嘅，意思係指個系統冇隨機性喺裏面。蒙地卡羅方法最基本嘅流程如下：
定義個系統嘅輸入嘅可能數值；
用一個表示輸入數值、受定義域限制嘅概率分佈隨機噉產生一個輸入；
對個輸入做決定性嘅運算；
將步驟 2 同 3 重複  咁多次，得到  個輸出，再結合數據－例如計嗰  個輸出嘅平均值。
舉個簡單例子說明，蒙地卡羅方法可以用嚟估計圓周率嘅數值：
畫一個正方形，再喺個正方形入面畫個 90° 嘅扇形，任何嘅輸入坐標  都實會喺個正方形裏面；
用一個均勻分佈產生一個輸入坐標數值，「均勻分佈」意思係指每個坐標可能數值出現嘅機會率都完全一樣；
喺產生咗出嚟輸入坐標數值嘅位置嗰度畫一點；
將步驟 2 同 3 重複  咁多次，然後數吓有幾多點點係喺個扇形裏面嘅，設呢個數值做 ，如果  嘅數值大到接近無限大嘅話，以下呢樣嘢會成立：

好似蒙地卡羅方法噉嘅隨機性模擬帶出咗個諗頭：無論個系統係咪決定性嘅都好，用帶有隨機性嘅方法都有可能俾得到有返咁上下準嘅答案－「有返咁上下準」意思係指，得出嘅答案同真實嘅答案差距唔係咁大，未至於大到能夠對解決問題嘅效率造成明顯嘅負面影響。而事實表明咗，就算一個系統事實上冇隨機性，好似蒙地卡羅方法噉嘅隨機性模擬好多時都好使好用，例子可以睇吓蒙地卡羅樹搜尋相關嘅嘢。

方程定個體 

電腦模擬仲可以分做方程為本同個體為本兩大種：方程為本模型常用於物理學同化學等嘅物理科學，指成個模型靠住一大柞嘅方程式－好多時會係微分方程－嚟表達啲變數之間嘅啦掕，呢啲方程式當中通常會係涉及時間，所以隨住時間演進，個模型會係噉計算個系統嘅各變數响時間點每一刻數值會係幾多。例如以下呢段用 C 程式語言寫嘅源碼可以攞嚟模擬喺牛頓第二定律之下郁動嘅物體：

double t = 0.0;
float dt = 1.0f;

float velocity = 0.0f;
float position = 0.0f;
float force = 10.0f;
float mass = 1.0f;
// 設一大柞變數，包括咗時間點、時間間隔、速度、位置、件物體受嘅力、同件物體嘅質量。

while ( t <= 10.0 ) // 重複噉計若干次，計到時間點係 10 為止。
{
    position = position + velocity * dt;
    velocity = velocity + ( force / mass ) * dt; // 用牛頓第二定律計吓件物體受嘅力同佢嘅質量會點影響佢嘅速度。
    t += dt;
}
相比之下，個體為本模型涉及模擬一大柞嘅個體－個體為本模型比較常用於生物學同社會科學，因為呢啲領域研究嘅現象往往都涉及一大柞個體喺度個別噉做決策。基本上，行個體為本模型嘅程式做嘅嘢可以用以下呢幾個步驟總括：
初始化，建構  個個體，每一個個體都掕住一啲數值表示佢嘅個體特性；
 設做 0；
喺呢個時間點 ，foreach 個體，按呢個個體嘅行動法則同埋特性，計佢跟住落嚟嘅狀態會點變；
如果個模型涉及一啲整體性嘅變數，按啲個體嘅新狀態嚟計呢啲整體變數嘅新數值；
t = t + 1；
一路係噉重複步驟 3 至 5，直至結束條件達到為止。
上面提咗嘅群動就係個體為本模型嘅例子。

第啲分類 
除咗以上嘅分類法之外，電腦模擬仲可以按以下呢啲特性嚟分：
離散事件模擬：指將模擬緊嗰個系統想像成喺離散時間當中存在嘅一連串事件；每件事件都會喺某個時間點發生，並且引起個系統嘅狀態  變化，而且呢啲模型通常都假設咗個系統喺事件之間嘅時間內唔會起乜嘢變化。大自然當中嘅系統好少可會話「冇事件發生就企喺度唔郁」，不過離散事件模擬喺工程學同商學就頗為常用－呢啲領域成日都會分析一啲人造嘅系統，例如係用離散事件模擬一間銀行嘅變化，當中會影響間銀行嘅狀態嘅事件包括「客人  出現」同「客人  出現」呀噉。
多重規模模型：指個模型會同時模擬多過一個層面嘅現象；如果話一個模型有「多層」，即係例如每層都會有一柞變數，而每層嘅變數都會係由下層嗰啲變數結合而成，
熱力學例子：一嚿物體嘅溫度取決於嚿嘢內部嘅粒子嘅郁動；
進化論例子：一個物種絕種嘅機會率取決於個物種啲個體嘅繁殖能力；
經濟學例子：一間公司整體生產咗幾多件產品取決於個別員工嘅工作表現。
一個多重規模模型會同時考慮多過一個層面嘅現象，而且會用一個層面嗰啲變數出嘅數值嚟做另外一啲層面嘅模擬嘅參數。
... 等等。

各領域嘅應用

物理學 

運算物理學涉及用運算方法解決物理學上撞到嘅問題：物理學通常都會用一大柞方程式表達某啲變數之間嘅關係，用呢啲變數組成嘅模型嚟描述研究緊嘅現象。做物理學相關工作嘅人成日都會用電腦模擬嚟處理一啲解析解搞唔掂嘅問題－呢啲問題往往係要做「想像 ，個答案係噉噉噉，想像 ，個答案係噉噉噉...」噉嘅運算方法嚟解除此之外，用電腦嚟模擬物理現象仲可以幫到手製作更加迫真嘅虛擬世界－形成咗所謂嘅物理引擎技術，呢種技術對電子遊戲同虛擬實境等嘅產品嚟講不可或缺。例如類似以下呢段 C 碼噉嘅碼可以攞嚟模擬喺牛頓力學二維空間下郁動嘅粒子，可以喺電子遊戲入面用嚟模擬物體嘅郁動：
...
    while (currentTime < totalSimulationTime) { // 當 currentTime < totalSimulationTime，一路做...
        for (int i = 0; i < NUM_PARTICLES; ++i) { // 家陣模擬若干粒粒子，foreach 粒子，做...
            Particle *particle = &particles[i];
            Vector2 force = ComputeForce(particle); // 有個子程序計吓呢粒粒子受緊幾多力。

Vector2 acceleration = (Vector2){force.x / particle->mass, force.y / particle->mass};
            // 上面呢行碼係用牛頓第二定律計粒粒子跟住嘅加速度。

particle->velocity.x += acceleration.x * dt; // 用加速度 update X 軸速度...
            particle->velocity.y += acceleration.y * dt; // 用加速度 update Y 軸速度...
            particle->position.x += particle->velocity.x * dt; // 用速度 update X 軸位置...
            particle->position.y += particle->velocity.y * dt; // 用速度 update Y 軸位置...
        }
        PrintParticles(); // 按啲粒子嘅位置，更新個畫面嘅樣。
        currentTime += dt; // currentTime 上升 1。
    }
...

生物學 

運算生物學涉及用運算方法解決生物學上撞到嘅問題：同運算物理學比起嚟，運算生物學比較傾向用個體為本模型，例如係進化論同生態學等領域上嘅研究都成日要分析一大柞個別噉做決策嘅個體之間嘅互動，以及係呢啲互動出嘅結果，而由於基因突變等嘅現象，生命呢家嘢本質上就實會有可能存在個體差異－因為噉，個體為本模型就啱嗮，例子可以睇吓對物競天擇等嘅現象嘅模擬。

雖然話生命現象傾向似個體為本模型，但運算生物學當中都有用到方程為本模型，例如洛卡-伏塔拉模型就係一個好出名嘅生物學方程為本模型，初頭呢個模型係俾人攞嚟模擬捕食者同獵物响生態系統當中嘅互動，打後呢個模型仲有俾人攞嚟模擬第啲生命現象。呢個模型涉及咗以下呢兩條非線性微分方程：

當中
 係獵物嘅個體數量；
 係捕食者嘅個體數量；
 表示時間；
 表示獵物個體數量隨時間嘅導數，即係獵物個體數量嘅瞬間變率；
－呢個數值取決於 同 。
 表示捕食者個體數量隨時間嘅導數；
－呢個數值取決於 同 。
、、、 係一柞實數參數，反映獵物同捕食者「平均每隻生產幾多隻後代」等嘅因素；
如果將  同  畫做圖，會出好似以下呢兩條噉嘅線：

跟住研究者仲有得調整吓啲參數，睇睇捕食者出生率突然勁跌會點樣影響個生態系統嘅情況。

認知科學 

認知科學上都有用到電腦模擬－電腦模擬可以攞嚟研究認知同神經系統，而人工智能本質上就係嘗試緊用電腦方法嚟模擬智能，務求教電腦展現出好似有智能噉嘅行為。例如人工神經網絡就係一種好出名嘅認知科學模型。人工神經網絡個諗頭係要用人工方法模仿動物神經細胞嘅功能：一粒動物神經細胞喺受到某啲特定刺激嗰陣，會用電或者化學方式向第啲神經細胞傳出訊號，然後同呢粒神經細胞相連嗰啲神經細胞會受到佢嘅訊號刺激，跟住又會各自噉射新嘅訊號－於是資訊就會喺成個神經系統當中傳播開去；一個人工神經網絡由大量嘅人工神經細胞組成，喺用電腦程式整神經網絡嗰陣，研究者會每粒人工神經細胞都同佢設個數值代表佢嘅啟動程度，而每粒神經細胞嘅啟動程度嘅數值都有條式計，呢條式包括咗喺佢之前嗰啲神經細胞嘅啟動程度。即係例如個程式 foreach 細胞有一條類似噉樣嘅算式：
；
 代表粒神經細胞嘅啟動程度， 代表前嗰排嘅神經細胞當中第  粒嘅啟動程度，而  就係前嗰排嘅神經細胞當中第  粒嘅權重。所以當一粒人工神經細胞啟動嗰陣，會帶起佢後面啲細胞跟住佢啟動－似十足生物神經網絡入面嗰啲細胞噉。假如個神經網絡嘅程式令佢能夠自行按照經驗改變  嘅數值嘅話，佢就會曉學習。

到咗廿一世紀初，人工神經網絡經已俾科學界廣泛噉用落去各種各樣嘅問題嗰度。喺應用上，事實證實咗人工神經網絡能夠處理機械視覺同埋語音識別呢啲傳統嘅電腦程式好難解決到嘅問題；而喺理論性嘅認知科學上亦有聯結主義理論，主張心靈可以用人工神經網絡嚟模擬，例如有研究就成功噉用人工神經網絡令人工智能好似人噉識得睇一幅圖決定要將注意力擺喺幅圖嘅邊一忽。

社會科學 

運算社會科學係指用運算方法研究社會科學，例如用電腦模擬解析社會現象。有學者指，電腦模擬呢種技術助長廿世紀起經濟學等嘅領域放棄唔真實嘅假設：廿世紀前嘅古典經濟學成日會做一啲唔真實嘅假設，包括假設咗啲經濟個體喺做經濟決策嗰陣係乜都知嘅，呢個假設好明顯唔合符現實，但當時嗰啲研究者受到運算能力嘅局限－要計「如果每個個體响資訊上都有差異，個模型會得出乜結果」需要做嘅運算量大得滯，用人手根本做唔嚟；呢點搞到啲學者明知個假設唔真實，都焗住要照用。廿世紀電腦模擬技術有咗好似個體為本模型噉嘅架生，令到經濟學家喺建立佢哋嘅模型嗰時可以考慮埋個體差異，助長咗經濟學上嘅革新。

博弈論上嘅研究成日都會用到個體為本模型，當中重複監犯困境就係一個出名嘅例子：監犯困境係一種博弈；喺一場監犯困境當中，每位博弈者有兩個選擇－合作同背叛；而一場兩人監犯困境嘅報償矩陣如下，每個格嗰兩個數值表示兩個人嘅分別所得：

定義上，喺監犯困境當中，以下呢條不等式成立：

例：；簡單講，監犯困境係指大家合作就可以得到  咁多利益，一位博弈者單方面背叛可以攞到著數，但如果雙方都背叛就大家齊齊輸。重複監犯困境係指啲博弈者進入監犯困境嘅情境若干次。

有研究者進行電腦模擬研究，行個體為本模型模擬重複監犯困境，喺最簡單嘅情況下即係：
初始化，將 R、T、S 同 P 設定做特定嘅數值；
建立  個模擬嘅個體，每個個體有兩個屬性－「採取嘅策略」 strat 同埋「累積咗嘅總得益」 score；
是但抽兩個個體，俾佢哋進行監犯困境博弈，每位模擬嘅博弈者會按佢嘅 strat 做決策；
按每個個體做嘅決定，計佢嘅總得益點變，例如兩個都揀咗合作嘅話，噉佢哋每個人都 score = score + R；
重複步驟 3 同 4 若干次；
原則上，「最成功嘅策略」係指令到個體嘅總得益最大化嘅策略，所以研究者要做嘅嘢係喺步驟 3 同 4 重複咗若干次之後，foreach 策略類型，計吓採取嗰種策略嘅個體嘅平均 score，而呢個數值最高嗰種策略就係「最成功嘅策略」。結果發現，「永遠淨係揀合作」係一種非常惡劣嘅策略，會搞到個個體係噉勁俾人背叛而最後輸。啲研究者就靠呢個結果作出推論：重複監犯困境就好似人嘅現實生活噉－人係一種有社會性嘅動物，往往會一齊合作先可以做到最多嘢，但喺合作嘅情境當中，成日都會出現機會容許某啲參與者搵第啲參與者老襯，而世界唔係烏托邦，完全利他嘅人係缺乏靠自己生存嘅能力嘅－人實要識得喺俾人背叛嗰陣，用返背叛嚟應對，以防俾人搵老襯。

工程學 

運算工程學涉及用電腦模擬等嘅運算方法分析工程學上應付嘅人造系統。喺運算工程學上，電腦模擬通常會以物理學知識做基礎，即係「分析緊個系統，個系統嘅原理涉及咗呢柞呢柞物理定律，將個系統涉及嗰啲物理定律編寫做程式，再行嚟睇，就做到模擬個系統行起上嚟會係點」。

例如廿一世紀初嘅結構分析就時不時都會用到電腦模擬：結構分析常用於土木工程－包括咗結構工程同建築工程－指個工程師分析一個結構同埋嗰個結構嘅各橛分別受到點樣嘅負荷，以及係分析呢啲負荷會對個結構造成乜嘢影響，對於建設安全嘅結構嚟講不可或缺，例如想像以下呢個噉嘅簡單結構，個結構係個等邊三角形，個工程師打算用呢個結構嚟撐住啲嘢，個結構要承受一股由上面壓落嚟嘅力，股力嘅大細係  咁多：

由力學上嘅知識已知，呢股力會造成一股反作用力。而假設組成個結構嗰啲樑夠嗮硬淨唔會變形，而且啲節點又夠勁，噉啲反作用力會係噉嘅樣：

而按物理學上對力嘅知識，如果成個結構企到喺度唔郁，噉啲力加埋嗮係 0，即係話喺  嗰點嘅力可以噉樣想像：

... 喺另外嗰幾點嘅力可以用同樣嘅道理嚟諗。如是者，個工程師就計到嗮「每條樑會受幾多力」等嘅重要資訊。上述呢個係一個簡化嘅例子：喺現實應用上，大些少嘅建築物會有成千上萬個類似噉嘅結構部件，唔可能人手計嗮。所以廿世紀末以來嘅工程師都會搵電腦模擬幫手，將結構唔同部份之間嘅互動定律組裝成矩陣，然後解方程，得出結構每部分需要受幾多力同會郁幾多，知道成棟嘢會唔會因為噉而有機會冧，俾工程師做「成棟建築物噉樣起得唔得」嘅判斷。

複雜啲嘅工程運算會涉及唔係線性嘅自然定律，呢啲定律加埋日常物件形狀上嘅不規則性，工程運算原則上冇絕對準嘅答案，只能夠將現實處境拆做好多嚿細細個、會彼此互動嘅組件，然後用電腦模擬計個大約啱嘅答案出嚟。呢種做法就叫做有限元分析。

驗證同確認 

喺做咗一場電腦模擬之後，研究者仲要評估個模型掂唔掂：電腦模擬用嘅模型梗會涉及抽象化，即係有一啲特徵係現實嗰樣現象有、但個模型係冇嘅；例如工程學上用電腦模型模擬機械或者建築物等嘅結構嗰時，就好興假設組成個結構嗰啲柱同樑係剛體唔會變形－原則上，呢個假設係一種理想化，現實世界冇任何嘢係真正嘅剛體，不過如果啲建築材料真係造得好精良，硬淨得好交關，硬淨到要極大嘅力先可以搞到佢變形，而呢啲「極大嘅力」出現嘅機率微乎其微，噉「個結構係剛體」呢一點喺絕大多數時候都會成立，所以個假設雖然唔真實，但唔會對分析嘅準確度造成顯著嘅負面影響，可以照用。由呢個例子睇得出，一個電腦模擬模型實會有可能做唔到準確噉描述現實，問題只係「個模型失敗嘅機率有幾大」同「個模型會喺幾多個情況下啱用」。

評估一個電腦模擬模型主要有兩大過程－驗證同確認：
驗證係指睇吓個模型嘅輸出同原模型嗰啲微分方程嘅解答接唔接近；呢個過程包括檢查個模型啲源碼做嘅運算係咪同預想中嘅演算法相同，仲有係睇吓用個模型計出嚟嘅結果係咪合符用解析解得出嘅結果。
確認係指睇吓個模型「表示到現實嗰樣系統嘅程度」係咪足以達到場電腦模擬嘅目的；呢個過程通常會涉及個研究者行完場模擬之後走去做實驗攞數據，睇吓啲數據係咪真係合乎個模型嘅預測，例如一個工程師做電腦模擬，模擬一個新設計嘅摩打行起上嚟係點，個模型預測個摩打嘅效率「會係咁多咁多」，而個模型預測嘅效率數值非常好，令佢有信心郁手整個摩打嘅原型出嚟；响整好咗個原型之後，佢就開始試行吓個原型摩打，並且搵方法量度個摩打嘅效率－「啲數據係咪合符佢嘅原先預期」就反映佢個模型掂唔掂。
有好多做電腦模擬研究嘅科學家都覺得確認呢個工序好緊要－電腦模擬嘅方法曾經受唔少人抨擊，覺得呢啲模型傾向抽象化得滯，而成功噉確認一個電腦模擬模型反映嗰個模型能夠描述現實，令個模型唔淨只係流於理論。

創發嘅啟示 

有哲學家指出，電腦模擬對理解創發嘅現象嚟講至關重要。創發係一種現象，指一樣由好多唔同部份組成嘅事物具有一啲佢組成部份冇嘅特性。好似係水噉，水喺化學上由氫同氧呢兩種化學元素組成嘅，水喺正常溫度同壓力下處於液體狀態，而呢種特性係氫同氧都冇嘅－水具有最少一樣「氫同氧唔具有嘅特性」；又或者好似係一個人噉，一個正常健康嘅人識行路識思考，而呢啲嘢都係組成人類身體嘅個別細胞唔能夠獨力做到嘅；創發仲可以分做兩種－弱創發同強創發，弱創發係指創發出嚟嗰樣特性係可以由啲組成部份嘅特性解釋嘅，而強創發係指創發出嚟嗰樣特性係冇得由啲組成部份嘅特性嚟解釋。

呢啲哲學家主張，電腦模擬嘅技術好幫到手理解弱創發嘅現象：研究者可以將一個預想中嘅系統寫做一個電腦模擬程式，個程式曉做「foreach 組成部份，做噉噉噉嘅運算」；而事實係，會用得電腦模擬嘅，好多時都係因為研究緊嗰樣現象有返咁上下複雜，齋靠用個人腦諗唔能夠想像到個系統會出現乜嘢特性；不過假設個模型係掂嘅，個研究者跟住就有得靠住個模型，睇到個整體系統會出現啲乜嘢特性－包括係個系統有冇啲柞組成部份冇嘅特性，從而攞到一啲冇電腦模擬就攞唔到、有關弱創發嘅資訊。

Foreach
模擬器
資訊可視化
格仔自動機
離散化
時間序列
運算理論
統計模型
思想實驗
情景計劃
遊戲物理
電子遊戲
模擬遊戲

文獻 

Desa, W. L. H. M., Kamaruddin, S., & Nawawi, M. K. M. (2012). Modeling of aircraft composite parts using simulation (PDF). In Advanced Materials Research (Vol. 591, pp. 557-560). Trans Tech Publications Ltd.
Hartmann, S. (1996). The world as a process (PDF). In Modelling and simulation in the social sciences from the philosophy of science point of view (pp. 77-100). Springer, Dordrecht.
Humphreys, P. (2004). Extending ourselves: Computational science, empiricism, and scientific method. Oxford University Press.
Kaizer, J. S., Heller, A. K., & Oberkampf, W. L. (2015). Scientific computer simulation review (PDF). Reliability Engineering & System Safety, 138, 210-218.
Macal, C. M., & North, M. J. (2008, December). Agent-based modeling and simulation: ABMS examples (PDF). In 2008 Winter Simulation Conference (pp. 101-112). IEEE.
McClelland, J. L. (2009). The place of modeling in cognitive science (PDF). Topics in Cognitive Science, 1(1), 11-38.
Nutaro, J. J. (2011). Building software for simulation: Theory and algorithms, with application in C++ (PDF). John Wiley & Sons Ltd.
Schelling, T. C., (1971). "Dynamic Models of Segregation (PDF)," Journal of Mathematical Sociology, 1: 143–186.
Winsberg, E. (2003). Simulated experiments: Methodology for a virtual world (PDF). Philosophy of science, 70(1), 105-125.
Winsberg, E. (2010). Science in the age of computer simulation. University of Chicago Press.
Xiang, Y., Arora, J. S., & Abdel-Malek, K. (2010). Physics-based modeling and simulation of human walking: a review of optimization-based and other approaches (PDF). Structural and Multidisciplinary Optimization, 42(1), 1-23.
Young, J. K., & Findley, M. G. (2014). Computational modeling to study conflicts and terrorism. In Routledge Handbook of Research Methods in Military Studies (pp. 269-280). Routledge.

攷

拎 

Computer Simulations in Science. Stanford Encyclopedia of Philosophy.
Models in Science. Stanford Encyclopedia of Philosophy.
Guide to the Computer Simulation Oral History Archive 2003-2018.

電腦科學

科學