我們把伽瑪函數留在哪裡
在前一篇裡,你從歐拉積分 Gamma(z) = integral from 0 to infinity of t^(z-1) e^(-t) dt(在 Re z > 0 時收斂)建出了伽瑪函數,並看到它滿足函數方程 Gamma(z + 1) = z Gamma(z)。那條遞迴是主力:它內插了階乘(Gamma(n + 1) = n!),而反過來寫成 Gamma(z) = Gamma(z + 1)/z 時,它把 Gamma 推廣到整個平面,成為一個亞純函數,在 z = 0, -1, -2, ... 處有單極點,而處處沒有零點。
那篇裡有兩個事實是這裡一切的種子。第一,Gamma 沒有零點——它的倒數 1/Gamma(z) 是一個整函數,恰好在非正整數處為零。第二,根據魏爾斯特拉斯因式分解,整函數由它的零點建成,所以 1/Gamma 必能寫成一個對點 0, -1, -2, ... 取的乘積。順著這個念頭追下去,你就得到伽瑪函數的魏爾斯特拉斯乘積——通往反射公式的橋。
把它寫開,那個乘積是 1/Gamma(z) = z e^(gamma z) 乘以對 n >= 1 取的乘積 (1 + z/n) e^(-z/n),其中 gamma = 0.5772... 是歐拉-馬斯刻若尼常數。光禿禿的因子 z 處理原點的零點;每個因子 (1 + z/n) 貢獻 z = -n 處的零點;而 e^(-z/n) 正是讓那個慢慢衰減的乘積收斂的魏爾斯特拉斯修正。常數 gamma 是被逼出來的——它恰好是 e^(-z/n) 那些修正所留下的殘餘,並在你一比較兩邊增長率的瞬間就現身。
反射公式:伽瑪遇上正弦
魔術在這裡。我們有 1/Gamma(z) 的一個乘積,也有 1/Gamma(-z) 的同一個乘積。把兩者相乘。光禿禿的因子給出 z 乘以 (-z) = -z^2,每一對修正因子合併:(1 + z/n)(1 - z/n) = 1 - z^2/n^2,而指數 e^(-z/n) 與 e^(+z/n) 恰好抵銷。存活下來的是 -z^2 乘以對 n 取的乘積 (1 - z^2/n^2)——而那個乘積你在兩級之前就見過了。
那就是正弦乘積:sin(pi z) = pi z 乘以對 n 取的乘積 (1 - z^2/n^2)。於是對 n 取的乘積 (1 - z^2/n^2) 等於 sin(pi z)/(pi z),我們的計算就變成 1/(Gamma(z) Gamma(-z)) = -z^2 乘以 sin(pi z)/(pi z) = -z sin(pi z)/pi。再用一次函數方程:Gamma(1 - z) = -z Gamma(-z),所以 Gamma(z) Gamma(1 - z) = -z Gamma(z) Gamma(-z)。代進去就得到大獎。
Gamma(z) * Gamma(1 - z) = pi / sin(pi z) z = 1/2 : Gamma(1/2)^2 = pi / sin(pi/2) = pi => Gamma(1/2) = sqrt(pi)
這就是反射公式:Gamma(z) Gamma(1 - z) = pi/sin(pi z)。把它讀成一條守恆律。Gamma(z) 在 z = 0, -1, -2, ... 的極點,與 Gamma(1 - z) 在 z = 1, 2, 3, ... 的極點,合起來在每個整數處都有極點——恰好是 pi/sin(pi z) 爆掉的地方。又因為右邊永不為零(sin(pi z) 有限),左邊也永不為零,這又重新證明了 Gamma 沒有零點。一條恆等式,伽瑪整套零點與極點的帳目就一齊歸位了。
幾項紅利,包括倍量公式
反射公式立刻就有回報。令 z = 1/2 得 Gamma(1/2)^2 = pi,於是 Gamma(1/2) = sqrt(pi)——這就是高斯積分裡所有那些 sqrt(pi) 的來源。更一般地,它讓你把右半平面的一個 Gamma 值換成左半平面的一個值,這正是你計算諸如 z = -1/2 + i 處的 Gamma 而完全不必離開積分收斂區的辦法。它是一個真正越過直線 Re z = 1/2 的反射——而那條線,正將成為 ζ 故事裡的主角。
反射公式的一個近親是倍量公式:Gamma(z) Gamma(z + 1/2) = 2^(1 - 2z) sqrt(pi) Gamma(2z)。反射把 z 與 1 - z 相關聯,倍量則把 z 與 z + 1/2 跟 2z 相關聯——它告訴你當引數加倍時伽瑪怎麼變。兩者都是高斯乘法公式的特例,也都從同一個魏爾斯特拉斯乘積、靠巧妙地配對因子掉出來。教訓是:乘積表示式,而非積分,才是證明乘法恆等式的正確工具。
斯特靈:n! 長得有多快?
現在來第二個祕密。函數方程告訴你 Gamma 每走一步就乘上一個 z 的因子,但它沒告訴你大 z 時 Gamma(z) 的大小。斯特靈公式以驚人的精確度回答了這點:對大的正 x,Gamma(x + 1) = x! 約等於 sqrt(2 pi x) 乘以 (x/e)^x。所以 n! 不只是「大」——它的增長像 (n/e)^n 乘以一個緩慢變化的 sqrt(n) 修正。對 n = 10,這給出約 360 萬,而真值是 362.88 萬,已經誤差不到 1%,而且相對誤差隨 n 增大而縮小。
sqrt(2 pi x) (x/e)^x 從哪來?看積分 Gamma(x + 1) = integral from 0 to infinity of t^x e^(-t) dt,把被積函數寫成 e^(x log t - t)。對大的 x,指數 x log t - t 在其導數 x/t - 1 為零之處有一個尖銳的極大,也就是在 t = x。積分裡的一切都堆在 t = x 附近;離那裡稍遠,被積函數就指數地變小。這正是拉普拉斯方法的核心想法:當一個積分由單一尖峰主宰時,你可以把指數換成它在峰頂的二次泰勒近似,再對所得的高斯函數積分。
- 把 Gamma(x + 1) 寫成 integral of e^(phi(t)) dt,其中 phi(t) = x log t - t,並找峰頂:phi'(t) = x/t - 1 = 0 給出 t = x。
- 在峰頂求值:phi(x) = x log x - x,所以 e^(phi(x)) = (x/e)^x——那就是主宰因子,即峰丘的「高度」。
- 用曲率 phi''(x) = -x/x^2 = -1/x 把峰丘近似成一個高斯函數;峰的寬度按 sqrt(x) 縮放。
- 對高斯函數積分:integral of e^(-(t - x)^2/(2x)) dt = sqrt(2 pi x);乘上高度就得 Gamma(x + 1) ~ sqrt(2 pi x) (x/e)^x。
走進複平面:鞍點與漸近級數
實變數的故事誠實卻有限:它給出領頭項,而且只對沿正軸奔向無窮的實 x。我們真正在意的函數——臨界帶裡的伽瑪、黎曼ζ函數——活在複平面裡,而我們想要的是 |z| 在整個扇形區奔向無窮時的 Gamma(z),不只沿實軸。為此那個峰頂變成一個鞍點:在那一點複指數的導數為零,但實部在一個方向上升、在另一個方向下降,就像一個山隘。
這就是鞍點法(或最速下降法)。你把積分圍道變形——這是合法的,因為被積函數是全純的,由柯西定理保證——使它沿最速下降方向穿過鞍點,在那裡被積函數衰減得最快,局部圖像又是一個乾淨的高斯函數。領頭項重現 sqrt(2 pi z) (z/e)^z,但現在對任何避開負實軸的扇形區裡的複 z 都成立。負軸被排除有個熟悉的理由:那裡正坐著 Gamma 的極點,而 log z 需要一條分支切割。
把展開再往前推,你就得到完整的斯特靈級數:log Gamma(z) = (z - 1/2) log z - z + (1/2) log(2 pi) + 1/(12 z) - 1/(360 z^3) + ...。關鍵的誠實在這裡:這個級數對每個固定的 z 都發散。它是個漸近級數,不是收斂級數。它的部分和先逼近 log Gamma(z),在你停在大約最小那一項之後達到最佳精度,接著各項便掉頭增長。|z| 越大,那個最佳誤差越小——但你永遠無法靠加更多項把它弄成恰好為零。漸近與收斂是不同的承諾,混淆兩者是個經典陷阱。