計算模擬學的歷史年表(科學史)#
計算模擬學是「用計算代替實驗」的科學:把物理、化學、生物寫成數學,再把數學交給電腦一步步算。從阿基米德的窮竭法、牛頓的運動方程、尤拉的數值格式,到薛丁格方程、蒙地卡羅、分子動力學、密度泛函、有限元素、氣象預報,再到 QM/MM、增強採樣、機器學習勢能,直到 AlphaFold 解開蛋白質折疊、AI 天氣超越數值預報——這部歷史就是人類追問「世界能否在電腦裡重演」的三百年探案史。
本書以「推理探案」的方式,為每個歷史事件寫一篇 wiki,包含前因後果、理論與公式。每篇檔名以年份開頭。
目錄(Wiki 書篇目)#
第一幕:萌芽 — 世界寫成方程(前230–1930)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 前230 | 阿基米德窮竭法:最早的數值逼近,圓周率與浮力 | -0230-Archimedes窮竭法.md |
| 1687 | Newton《自然哲學之數學原理》:運動方程成為一切模擬的起點 | 1687-Newton運動方程.md |
| 1768 | Euler 方法:第一個常微分方程數值解法 | 1768-Euler方法.md |
| 1822 | Fourier 熱傳與 Navier–Stokes 方程:連續體模擬的母方程 | 1822-Fourier與NavierStokes.md |
| 1922 | Richardson 數值天氣夢:六萬人算房的預報工廠與失敗 | 1922-Richardson數值天氣.md |
| 1926 | Schrödinger 方程:量子模擬的目標函數誕生 | 1926-Schrodinger方程.md |
| 1927 | Hartree 自洽場:第一個量子化學迭代演算法 | 1927-Hartree自洽場.md |
| 1930 | Hartree–Fock+Slater 行列式:交換反對稱的正軌 | 1930-HartreeFock與Slater.md |
第二幕:電腦誕生 — 暴力計算開闢新疆(1946–1965)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 1946 | ENIAC 彈道計算與 Monte Carlo 誕生:Ulam、von Neumann 的賭局 | 1946-ENIAC與MonteCarlo誕生.md |
| 1950 | Charney 的 ENIAC 氣象預報:數值天氣第一次成功 | 1950-Charney數值天氣預報.md |
| 1952 | Hodgkin–Huxley 神經模擬:手搖計算機算出的動作電位 | 1952-HodgkinHuxley神經模擬.md |
| 1953 | Metropolis Monte Carlo:MANIAC 上的狀態方程 | 1953-MetropolisMonteCarlo.md |
| 1956 | 有限元素法 FEM:Turner–Clough 的飛機翅膀算法 | 1956-有限元素法FEM.md |
| 1957 | Alder–Wainwright 硬球 MD:第一次分子動力學,相變的電腦證據 | 1957-AlderWainwright硬球MD.md |
| 1963 | Lorenz 混沌模擬:蝴蝶效應,數值天氣的極限 | 1963-Lorenz混沌模擬.md |
| 1964 | Rahman 液態氬 MD:Lennard-Jones 流體的逼真重演 | 1964-Rahman液態氬MD.md |
| 1965 | Hohenberg–Kohn 定理:密度泛函理論 DFT 的存在性證明 | 1965-HohenbergKohn定理.md |
| 1965 | Kohn–Sham 方程:讓 DFT 可算的軌道技巧 | 1965-KohnSham方程.md |
第三幕:分子動力學與多尺度 — 原子世界動起來(1967–1985)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 1967 | Verlet 積分:MD 的辛結構守護神 | 1967-Verlet積分.md |
| 1970 | Conway 生命遊戲:細胞自動機的爆發 | 1970-Conway生命遊戲.md |
| 1974 | Wilson 格點 QCD:時空離散化的強交互作用 | 1974-Wilson格點QCD.md |
| 1976 | Gillespie SSA:化學主方程的精確隨機模擬 | 1976-Gillespie隨機模擬.md |
| 1976 | Warshel–Levitt QM/MM:酵素的多尺度手術刀 | 1976-WarshelLevittQMMM.md |
| 1977 | BPTI 蛋白質 MD:McCammon–Karplus 第一次折疊蛋白 | 1977-BPTI蛋白質MD.md |
| 1977 | SPH 光滑粒子流體:Lucy、Gingold–Monaghan 的無網格法 | 1977-SPH流體粒子法.md |
| 1980 | Ceperley–Alder 量子 Monte Carlo:均勻電子氣的基準答案 | 1980-CeperleyAlder量子MC.md |
| 1984 | Nosé–Hoover 恆溫器:擴展系綜的溫度控制 | 1984-NoseHoover恆溫器.md |
| 1985 | Car–Parrinello 從頭 MD:DFT 與 MD 的統一 | 1985-CarParrinello從頭MD.md |
第四幕:採樣與預測 — 罕見事件與結構預測(1994–2013)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 1994 | CASP 蛋白質結構預測競賽開幕:盲測的試金石 | 1994-CASP結構預測競賽.md |
| 1999 | Rosetta:Baker 的片段組裝折疊術 | 1999-Rosetta蛋白質預測.md |
| 2002 | Metadynamics:Laio–Parrinello 的填溝增強採樣 | 2002-Metadynamics增強採樣.md |
| 2007 | Behler–Parrinello 神經網路勢能:機器學習勢的開端 | 2007-BehlerParrinello神經勢能.md |
| 2013 | 多尺度模擬諾貝爾獎:Karplus、Levitt、Warshel | 2013-多尺度模擬諾貝爾獎.md |
第五幕:AI 革命 — 從 AlphaFold 到科學基礎模型(2018–至今)#
| 年份 | 事件 | Wiki |
|---|---|---|
| 2018 | AlphaFold 1:CASP13 橫空出世,距離圖革命 | 2018-AlphaFold1.md |
| 2020 | AlphaFold 2:CASP14 原子精度,折疊問題落幕 | 2020-AlphaFold2.md |
| 2021 | 開放折疊時代:AF2 開源+RoseTTAFold+ESMFold | 2021-開放折疊時代.md |
| 2023 | AI 天氣超越 NWP:GraphCast、Pangu-Weather | 2023-AI天氣超越NWP.md |
| 2024 | AlphaFold 3 與諾貝爾化學獎:Hassabis、Jumper、Baker | 2024-AlphaFold3與諾貝爾獎.md |
| 2025 | 科學基礎模型現況:MACE、MatterSim、GenCast 與通用原子模擬 | 2025-科學基礎模型現況.md |
程式實作(_code/,檔名:年份-程式名稱.py,全數 numpy 可執行)#
| 程式 | 對應 Wiki | 驗證要點 |
|---|---|---|
| _code/-0230-archimedes_pi.py | 前230 窮竭法 | 96 邊夾擊 \(3.1408 < \pi < 3.1429\) |
| _code/1768-euler_method.py | 1768 Euler 方法 | 誤差比約 10 倍, \(O(h)\) |
| _code/1822-heat_equation_ftcs.py | 1822 Fourier/NS | 穩定 \(r \le 0.5\) 、 \(r=0.6\) 發散 |
| _code/1922-advection_cfl.py | 1922 Richardson/1950 Charney | 迎風穩定、中心差發散(CFL) |
| _code/1926-schrodinger_box.py | 1926 Schrödinger | 有限差分本徵值誤差 \(< 2\%\) |
| _code/1946-monte_carlo_pi.py | 1946 Monte Carlo | 誤差 \(\sim 1/\sqrt N\) |
| _code/1952-hodgkin_huxley.py | 1952 H–H | 動作電位峰值 \(> 0\) mV |
| _code/1953-metropolis_ising.py | 1953 Metropolis | 低溫有序/高溫無序 |
| _code/1956-fem_1d_poisson.py | 1956 FEM | P1 元誤差 \(< 10^{-3}\) |
| _code/1957-hardsphere_gas.py | 1957 硬球 MD | 碰撞動量能量守恆 |
| _code/1963-lorenz_butterfly.py | 1963 Lorenz | 初值差 \(10^{-8}\) 指數分離 |
| _code/1964-lennard_jones_md.py | 1964 Rahman | NVE 能量漂移 \(< 2\%\) |
| _code/1967-verlet_oscillator.py | 1967 Verlet | Verlet 保能量、Euler 發散 |
| _code/1970-game_of_life_glider.py | 1970 生命遊戲 | 滑翔機 4 步平移 |
| _code/1976-gillespie_ssa.py | 1976 Gillespie | 均值 \(\approx \lambda/\mu\) |
| _code/1976-qmmm_double_well.py | 1976 QM/MM | 雙阱佔比 \(\approx\) 1:1 |
| _code/1977-sph_density.py | 1977 SPH | 密度估計 L2 \(< 0.05\) |
| _code/1984-nose_hoover.py | 1984 Nosé–Hoover | 平均動能 \(\approx T/2\) |
| _code/1999-hp_lattice_folding.py | 1999 Rosetta | HP 格點最低能量構形 |
| _code/2002-metadynamics_1d.py | 2002 Metadynamics | 自由能重建、多次躍遷 |
| _code/2007-neural_pair_potential.py | 2007 神經勢能 | MLP 擬合 Morse 勢 |
| _code/2018-contact_mi_toy.py | 2018 AlphaFold1 | 共演化互資訊找接觸 |
| _code/2023-neural_weather_toy.py | 2023 AI 天氣 | AI 勝持續性 \(> 20\%\) |
| _code/2025-equivariant_filter_toy.py | 2025 基礎模型 | 旋轉等變 \(F(Rx) = RF(x)\) |
因果鏈總覽#
Archimedes (-230) ── 窮竭逼近 ── Newton (1687) ── 運動方程 ── Euler (1768) ── 數值格式
│ │
│ ├─ Fourier/NS (1822) ── PDE ── FEM (1956) / SPH (1977)
│ ├─ Richardson (1922) ── NWP夢 ── Charney (1950) ── Lorenz (1963) ── AI天氣 (2023)
│ └─ Schrödinger (1926) ── Hartree (1927) ── HF (1930)
│ │
├─ ENIAC/MC (1946) ── Metropolis (1953) ── QMC (1980) ── 採樣 ── Metadynamics (2002)
│ │ │
│ └─ Alder MD (1957) ── Rahman (1964) ── Verlet (1967) ── BPTI (1977)
│ │
│ ├─ HK/KS (1965) ── DFT ── Car-Parrinello (1985)
│ ├─ Nosé-Hoover (1984) ── 恆溫恆壓系綜
│ └─ QM/MM (1976) ── Nobel (2013)
│
├─ HH (1952) ── 生物模擬 ── Gillespie (1976) ── 隨機化學動力學
│
├─ Wilson QCD (1974) ── 格點場論 ── 高能模擬分支
│
├─ Life (1970) ── CA ── 複雜系統模擬分支
│
└─ CASP (1994) ── Rosetta (1999) ── BP神經勢 (2007) ── AF1 (2018) ── AF2 (2020)
│ │
└─ 開放折疊 (2021) ── AF3+Nobel (2024) ── 基礎模型 (2025)
寫作方式說明#
每篇 wiki 採「推理探案」結構:
- 案發現場(前因):當時的未解之謎是什麼?誰遇到的?為何重要?
- 偵查過程(推理):主角如何思考?關鍵靈感為何?核心技術(方程、演算法、勢能、採樣策略)如何推導,含數學式與表格。
- 結案報告(後果):謎題如何解?留下什麼遺產?影響了哪些後續事件?
- 證據與工具:關鍵公式、演算法虛擬碼或 Python 模擬程式、參數表(非必要不硬寫程式,優先講清理論)。