應用與前沿

N 體模擬(N-body simulation)

把一千顆恆星丟進空曠的太空,讓重力把每一顆拉向其他每一顆,看看十億年間會發生什麼。這沒有封閉公式——連三個有重力的物體都沒有通解——所以唯一的辦法是一步一步地模擬它。N 體模擬正是如此:它追蹤 N 個彼此皆有交互作用的粒子的運動,把它們的軌跡向前積分。

其核心又是牛頓。每個粒子受到的力是其他所有粒子拉力的總和,你計算那個合力,以一個小時間步更新速度與位置(通常用蛙跳法這類辛積分子,以在長時間運行中守恆能量),然後重複。天真做法的代價是癥結所在:有 N 個粒子時,把每一對的力都加起來,每步是 N 乘 N 的工作量,對星系模擬中的數十億粒子而言毫無希望。本領域偉大的演算法構想正是攻克此點。樹碼(巴恩斯-赫特法)把遠處成群的粒子歸組,把每一群當成單一個物體處理,把代價砍到約 N log N。快速多極法更進一步,把整群粒子的遠場影響展開成少數幾個精選的項,逼近線性 O(N)。粒子網格法把粒子鋪到網格上,用基於 FFT 的快速帕松求解器求出場。

N 體模擬建構了我們對星系、暗物質與宇宙網如何形成的現代圖像,同樣的機械也模擬電漿、星團,甚至人群與交通。誠實的告誡是:那些快速方法是帶有可控誤差的近似——你用精確的兩兩力交換一個可調的精度參數——而且粒子間的近距離接觸可能需要極小的時間步或特殊處理。其中的藝術,在於選擇那些你理解且能界定其誤差的近似。

一場宇宙學模擬可能追蹤一百億個暗物質「粒子」,從大霹靂之後不久到今日。直接的兩兩求和是不可想像的,於是巴恩斯-赫特樹把遠處一團百萬粒子當成一個點,把代價從 N^2 量級砍到 N log N 量級,把一場不可能的運算變成超級電腦能跑完的運算。

巴恩斯-赫特:把遠處一團視為一個點,將 O(N^2) 變成 O(N log N)。

快速的樹法與多極法都是近似:它們用精確的力交換一個你必須留意的可調誤差。再者兩體近距接觸可能迫使極小的時間步,所以「N log N 量級」是在那些熱點之外的代價。

又称
many-body simulationgravitational N-bodyparticle simulationN 體問題模擬多體模擬