辛積分子(symplectic integrator)
/ sim-PLEK-tik /
用一個普通的高準確度求解器追蹤一顆行星的軌道一百萬年,會發生令人不安的事:軌道緩緩向內螺旋或向外漂移,行星的能量穩定地往上爬或往下掉。真實軌道兩者都不會——能量被精確守恆,永遠如此。辛積分子是為這類守恆系統設計的特殊方法,能讓這種長期結構保持完好,以一點短期準確度換取驚人的長期忠實度。
辛方法是為「哈密頓」系統打造的——無摩擦力學的方程,其中位置 q 與動量 p 的演化會守恆能量並保持相空間體積(劉維定理)。辛積分子是其離散步驟精確保持這種相空間(辛)結構的方法,儘管它不精確守恆能量。最簡單的例子是辛歐拉/蛙跳(Stoermer-Verlet,韋萊)法:用當前位置的力更新動量,再用新動量更新位置,交錯地蛙跳。關鍵在於,辛方法並不守恆真能量 H,卻「精確」守恆一個鄰近的「影子」能量,它在指數般長的時間內與 H 保持有界距離——所以算出的能量在一個固定的帶內振盪,而非漂走。
這就是為什麼辛積分子主宰長時間模擬:數十億年的行星動力學、數百萬步的分子動力學、粒子加速器。每步準確度更高的標準 RK4 在長程上其實表現「更差」,因為它的能量誤差會長期累積(無界漂移),而一個謙遜的二階辛方法卻能無限期地讓能量保持有界。誠實的取捨是:辛方法只在守恆(哈密頓)問題上發光——對耗散或一般 ODE 毫無好處;它們最喜歡「固定」步長(自適應步長控制會破壞辛結構,須謹慎處理);而且它們優先確保長期的定性行為(能量有界、無人為漂移),而非任一瞬間最小的誤差。
模擬一個無摩擦的擺(或一顆行星)一百萬個週期。純 RK4 每步誤差極小,但其能量穩定漂移,所以時間夠長後軌道會明顯衰減或成長。Verlet(蛙跳)辛方法雖然每步只有二階,卻能讓能量永遠在一個固定的窄帶內振盪——軌道保持為閉合迴圈。為了長期忠實度,結構勝過單純的每步準確度。
保持相空間結構:能量長久維持有界,而非漂移。
辛方法「不」守恆精確能量——它守恆一個鄰近的影子能量,所以真能量在一個有界的帶內振盪而非漂移。這個好處只適用於守恆(哈密頓)系統,且通常需要固定步長;自適應步進會悄悄摧毀辛性質。