貫穿全篇的那一幅圖景
上一份指南教的是漸近分析的語言——「f ~ g」是什麼意思,以及為什麼一個漸近級數即便發散,也能極其有用。現在我們要把它用在一類極其常見的問題上:積分「I(s) = integral of e^{s*phi(x)} dx」,其中 s 是一個大的正參數,phi(x) 是某個光滑的實函數。整盤棋的關鍵就在那個指數上。隨著 s 增大,「e^{s*phi(x)}」會把 phi 最高的那一部分放大到與其餘一切完全不成比例的程度——被積函數於是收成了一根針一樣細的尖峰,立在 phi 的最大值之上。
用數字來體會這種直覺。設 phi 在 x = 1 處取峰值 phi(1) = 1,而緊挨著的地方 phi = 0.99。被積函數這兩處高度之比是「e^{s*1} / e^{s*0.99} = e^{0.01*s}」。當 s = 100 時這個比值已是 e ~ 2.7;當 s = 1000 時則是 e^{10} ~ 22000。一個在 phi 上僅僅略低一點的點,在被積函數裡就被指數級地碾平。於是整個積分的值幾乎全部來自那個唯一最高點附近、且越縮越窄的一小扇窗口——而 拉普拉斯方法(Laplace's method)正是只憑這扇窗口內發生的事來估計整個積分的功夫。
把峰高斯化
設 phi 在某一內點 x0 處取得唯一的極大值,於是 x0 是一個貨真價實的臨界點,滿足 phi'(x0) = 0 且 phi''(x0) < 0。在 x0 附近,我們做微積分裡最自然的一件事:把 phi 換成它的二階泰勒展開。由於在極大值處一階導項為零,這個展開就是「phi(x) ~ phi(x0) + (1/2) phi''(x0) (x - x0)^2」。指數於是分解成一個常數乘以一個高斯包:「e^{s*phi(x)} ~ e^{s*phi(x0)} * e^{-(1/2) s |phi''(x0)| (x - x0)^2}」,因為 phi''(x0) 是負的。
現在這個積分你可以精確求出了。把常數「e^{s*phi(x0)}」提到積分號外,剩下的就是高斯積分「integral over all x of e^{-(1/2) s |phi''(x0)| (x - x0)^2} dx」,它等於「sqrt(2*pi / (s |phi''(x0)|))」。這裡藏著兩個小動作,而它們都是誠實的。其一,即使真實區間是有限的,我們也把上下限擴到了整條實軸——這沒問題,因為高斯尾巴所添的那點東西是指數級可忽略的。其二,我們只保留了 phi 的二次項——這也沒問題,因為隨著 s 增大,峰會以快過三次及更高次項能起作用的速度向 x0 收窄。
I(s) = integral of g(x) e^{s*phi(x)} dx, s -> +infinity
1. find x0 where phi'(x0) = 0, phi''(x0) < 0 (the peak)
2. Taylor expand: phi(x) = phi(x0) - (1/2)|phi''(x0)|(x-x0)^2 + ...
3. freeze the slow factor: g(x) ~ g(x0)
4. extend limits to +/- infinity, do the Gaussian:
integral e^{-(1/2) s |phi''(x0)| (x-x0)^2} dx = sqrt( 2*pi / (s|phi''(x0)|) )
LEADING TERM:
I(s) ~ g(x0) * e^{s*phi(x0)} * sqrt( 2*pi / (s |phi''(x0)|) )讀懂首階公式
把它們拼起來,就得到帶緩變前因子 g(x) 的積分的招牌結果:當 s -> infinity 時,「integral of g(x) e^{s*phi(x)} dx ~ g(x0) e^{s*phi(x0)} sqrt(2*pi / (s |phi''(x0)|))」。每一塊都在告訴你某種實在的東西。因子「e^{s*phi(x0)}」是尖峰的高度——它定下整體尺度,並按指數增長或衰減。因子 g(x0) 不過是緩變前因子在峰處的取樣(它在那扇窄窗口上的變化可忽略)。而「sqrt(2*pi / (s |phi''(x0)|))」是尖峰的「寬度」:峰越尖(|phi''| 越大)或 s 越大,窗口就越窄,於是積分越小,按 1/sqrt(s) 衰減。
示範傑作:斯特林公式的來歷
最負盛名的收穫是當 n 很大時 n! 的斯特林近似。從 伽瑪函數的積分定義出發:「n! = Gamma(n+1) = integral from 0 to infinity of t^n e^{-t} dt」。這還不是拉普拉斯形式,因為大參數 n 待在 t^n 裡,而不在指數上。標準做法是把一切塞進一個指數:「t^n e^{-t} = e^{n ln t - t}」。為了暴露出乾淨的大參數結構,作代換 t = n*x,它把峰縮放到一個固定位置。積分就變成「n^{n+1} integral from 0 to infinity of e^{n(ln x - x)} dx」,此刻它就是教科書式的拉普拉斯方法,取 s = n、phi(x) = ln x - x。
現在搖動手柄。phi'(x) = 1/x - 1 在 x0 = 1 處為零,而 phi''(x) = -1/x^2 給出 phi''(1) = -1,是個極大值。峰值為 phi(1) = ln 1 - 1 = -1。代入首階公式(g = 1):積分約為「e^{n*(-1)} sqrt(2*pi/(n*1)) = e^{-n} sqrt(2*pi/n)」。再把外面的 n^{n+1} 乘回去,你就到達終點:「n! ~ n^{n+1} e^{-n} sqrt(2*pi/n) = sqrt(2*pi*n) (n/e)^n」。這就是斯特林公式,純粹由「在峰處展開」推出,別無他物。
它有多準?在 n = 10 時真值 10! = 3628800,斯特林給出約 3598696——相對誤差不到 1%,而它只是一行近似。這套方法還不止給出首項:在展開裡保留 phi 的三次、四次項,你就能系統地生成各階修正,那個著名的級數「n! ~ sqrt(2*pi*n)(n/e)^n (1 + 1/(12n) + 1/(288 n^2) - ...)」。這條修正級數本身就是一個漸近級數——它最終會發散,可一旦在合適的地方截斷,就準得驚人,這正是上一份指南叮囑你要預期的那種行為。
當主角在端點:沃森引理
如前所述的拉普拉斯方法假定峰在內部。但有一大族積分的主導貢獻反倒坐落在端點上,內部根本沒有臨界點。其典範形態是「I(s) = integral from 0 to infinity of f(t) e^{-s*t} dt」——一種錨定在 t = 0 處的單邊指數衰減。隨著 s 增大,權重 e^{-s*t} 衰減得如此之快,以至於只有 f(t) 在 t = 0 處的行為能倖存下來。這正是沃森引理的天然主場,並且請注意:這個形式恰好就是 f 的拉普拉斯變換,只不過取的是大 s 極限。
沃森引理妙在徹底機械化。若在 t = 0 附近函數 f(t) 有一個(可含分數冪的)展開「f(t) ~ sum of a_k t^{k+b}」,其中指數 b > -1 以保證積分收斂,那麼你就可以逐項積分——哪怕這條級數對任何 t > 0 都不收斂。每個冪 t^{c} 對著 e^{-s*t} 積出一個伽瑪函數:「integral from 0 to infinity of t^c e^{-s*t} dt = Gamma(c+1) / s^{c+1}」。結果是漸近級數「I(s) ~ sum of a_k Gamma(k+b+1) / s^{k+b+1}」。於是 f 在小 t 處的泰勒(或皮瑟)數據,逐項地,就化成了它的變換在大 s 處的漸近式。
侷限、近親,以及該記住什麼
對前提條件要誠實。拉普拉斯方法需要一個實指數,所以 phi 必須是實的,且那個峰必須真正佔主導;若有兩個極大值打平,你就得為每一個各加一份貢獻。它需要 phi''(x0) 非零——退化的峰(連 phi'' 也為零)會讓尖峰變胖,高斯被四次式取代,衰減率從 1/sqrt(s) 變成 1/s^{1/4}。而且它是一句漸近的陳述:它告訴你 s -> infinity 時的行為,而非在某個固定有限 s 處的保證上界——儘管實踐中即便 s 不大它也常常極佳(回想 n = 10 時那 1% 的誤差)。
最大的限制是 phi 必須是實的,這樣尖峰才是一個你能穩穩坐上去的實在隆起。一旦指數變成虛的——形如「e^{i*s*psi(x)}」的積分,那是波動與振盪的天地——就沒有峰可供展開了;取而代之的是急速振盪讓相鄰貢獻相互抵消,主導點落在 psi'(x) = 0 之處。那便是穩相法。讓指數取複值、並把積分路徑形變以穿過一個鞍點,就能把這兩幅圖景統一起來,於是你抵達最速下降法——也就是下一份指南。拉普拉斯方法正是那個更宏大的複平面故事在實軸上、單峰情形下的特例。