贯穿全篇的那一幅图景
上一份指南教的是渐近分析的语言——「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 之处。那便是稳相法。让指数取复值、并把积分路径形变以穿过一个鞍点,就能把这两幅图景统一起来,于是你抵达最速下降法——也就是下一份指南。拉普拉斯方法正是那个更宏大的复平面故事在实轴上、单峰情形下的特例。