1. 对数伽马函数 (gammaln) 的斯特林公式
在数值分析和渐近分析中,处理大自变量的伽马函数通常使用对数形式 lnΓ(z) 的斯特林渐近展开(Stirling’s asymptotic series)。
当 ∣z∣→∞ 且 ∣arg(z)∣<π 时:
lnΓ(z)∼(z−21)lnz−z+21ln(2π)+k=1∑∞2k(2k−1)z2k−1B2k
其中 B2k 为伯努利数。截断前几项的常用形式为:
lnΓ(z)≈(z−21)lnz−z+21ln(2π)+12z1−360z31+O(z−5)
2. 伽马函数比值的渐近展开
在计算高阶正交多项式时,常遇到 Γ(n+b)Γ(n+a)。直接计算 Γ 会导致浮点溢出(双精度下 n>171 即溢出),大数 lnΓ 直接相减则会导致灾难性取消(Catastrophic cancellation)。
Tricomi-Erdélyi 展开
由 Tricomi 和 Erdélyi 提出,直接描述了伽马函数比值的渐近行为:
Γ(z+b)Γ(z+a)∼za−bn=0∑∞cnz−n
展开到前两项的高阶近似形式为:
Γ(n+b)Γ(n+a)∼na−b[1+2n(a−b)(a+b−1)+O(n−2)]
数值计算策略
- 中等规模 n:利用语言内置函数
exp(gammaln(n+a) - gammaln(n+b))。
- 超大规模 n:必须使用上述 Tricomi-Erdélyi 渐近公式直接计算,避免精度丢失。
3. gammaln 差值的广义斯特林展开
如果直接处理对数差值 lnΓ(z+a)−lnΓ(z+b),可以利用带有伯努利多项式 Bn(x) 的广义斯特林展开。该公式结构严密,直接将渐近系数映射到伯努利多项式的差分上:
lnΓ(z+a)−lnΓ(z+b)∼(a−b)lnz+k=1∑∞k(k+1)zk(−1)k+1(Bk+1(a)−Bk+1(b))
代入 k=1 时的 B2(x)=x2−x+61,可严格推导出现 O(z−1) 项的系数 2z(a−b)(a+b−1)。
4. 伯努利多项式 (Bernoulli Polynomials) 简析
定义
通过母函数(Generating Function)定义为:
et−1text=n=0∑∞Bn(x)n!tn
前几项为:
- B0(x)=1
- B1(x)=x−21
- B2(x)=x2−x+61
核心性质与意义
伯努利多项式是连接“离散数学”与“连续数学”的核心桥梁,其在伽马函数分析中频繁出现的原因包括:
- 差分算子的逆运算:
具备美妙的差分性质 Bn(x+1)−Bn(x)=nxn−1。因为 Γ 函数的核心是差分递推 lnΓ(z+1)−lnΓ(z)=lnz,伯努利多项式天然是解析这种离散差分方程的最优基底。
- 欧拉-麦克劳林求和公式 (Euler-Maclaurin Formula):
用于将离散求和转化为连续积分。斯特林公式的严格推导正是利用该公式对 lnk 求和,从而引入了伯努利项。
- 等幂求和闭式解:
用于推导自然数列等幂求和(Faulhaber 公式)。