
如何用复分析理解黎曼zeta函数的解析延拓
黎曼ζ函数常以级数定义:
ζ(s) = Σn=1∞ 1/ns
这里 s 是复数。这个级数并非对所有复数都收敛:它只在 Re(s) > 1 时绝对收敛。可是数论和复分析中常要研究 ζ(s) 在更大范围内的性质,例如它在临界带中的零点,或函数方程所联系的 s 与 1-s。这就需要解析延拓:在原级数无法使用的区域,用另一个表达式定义同一个解析函数,并保证新旧定义在重叠区域一致。
本文从复分析的基本原则出发,说明欧拉–麦克劳林求和公式怎样给出ζ函数的延拓,怎样用代码计算一个可控的近似,以及使用时必须注意的边界。重点不是把一个公式背下来,而是弄清楚公式为何有效、它在哪些点会失效,以及数值结果能说明什么、不能说明什么。
一、解析延拓究竟延拓什么
一个复函数在某区域内解析,意味着它在该区域的每一点附近都可以展开为幂级数。若两个解析函数在一个连通区域中有一块具有聚点的区域上相等,根据恒等定理,它们就在整个连通区域上相等。因此,解析延拓不是随意挑选一个新公式,而是寻找一个在更大区域解析、并且在原定义有效处与原函数一致的表达式。
ζ函数的初始定义域是 Re(s) > 1。在这个区域,级数绝对收敛,可以逐项进行许多常见操作。解析延拓之后,级数本身通常不再收敛,但延拓后的函数仍有意义。务必区分以下两句话:
- “级数
Σ n-s收敛”是关于该级数的陈述。 - “ζ函数在
s处有解析延拓值”是关于函数的陈述。
延拓值不是发散级数经过普通求和得到的结果,也不意味着原级数在新区域里突然收敛。像 ζ(-1) = -1/12 这样的等式,指的是ζ函数延拓后的函数值,并非通常意义下把 1+2+3+... 相加。
二、先看一条直接的延拓公式
在 Re(s) > 1 时,可以把ζ级数拆成前 N-1 项和从 N 开始的尾和。欧拉–麦克劳林求和公式把尾和与积分及导数修正项联系起来。对幂函数 f(x)=x-s 使用该公式,可以得到:
ζ(s) = Σn=1N-1 n-s + N1-s/(s-1) + (1/2)N-s + Σk=1p [B2k/(2k)!] (s)2k-1 N1-s-2k + Rp(s,N)
其中 N 是正整数,p 是非负整数;B2k 是伯努利数;(s)m = s(s+1)...(s+m-1) 是上升阶乘。Rp 是余项。若 p=0,求和项为空。
公式中最关键的部分是 N1-s/(s-1)。对正实数 N,复幂可定义为 N-s = exp(-s log N),这里的 log N 是实对数,不涉及复对数分支。积分项正是:
∫N∞ x-s dx = N1-s/(s-1)
这个积分在 Re(s) > 1 时收敛;右侧却是关于 s 的亚纯函数,除了 s=1 外可以继续取值。导数修正项与余项则让这种替换精确匹配原本的尾和,而不是只把尾和粗略地换成一个积分。
对每个固定的 p,欧拉–麦克劳林余项的积分表达式在足够大的半平面收敛;一个常用的充分条件是 Re(s) > 1-2p。随着 p 增加,可覆盖更靠左的区域。不同阶数所得的表达式在共同有效区域一致,因此可以逐步将ζ函数延拓到除 s=1 外的整个复平面。
这里的余项不是可随意忽略的小装饰。截断后的有限和通常只是近似;要把它当作精确恒等式,必须连同余项一起保留。数值代码若只计算有限个修正项,就应明确标为近似,不能把有限表达式误称为完整的解析延拓公式。
三、极点与留数:延拓并不等于处处解析
ζ函数延拓后在整个复平面上是亚纯函数,而不是处处解析的整函数。它唯一的极点是 s=1,并且是简单极点,留数为 1。从上面的公式也能直接看出来:N1-s 在 s=1 处等于 1,所以积分项的极点部分为 1/(s-1);其余部分在该点有限。
因此,靠近 s=1 时,ζ函数可写为:
ζ(s) = 1/(s-1) + γ + O(s-1)
其中 γ 是欧拉–马歇罗尼常数。若计算的是 ζ(s)-1/(s-1),在 s=1 可以取极限,得到 γ。但这不改变ζ函数本身在该点有极点的事实。不能把“减去极点后的函数可延拓到 s=1”说成“ζ函数在 s=1 有有限值”。
这个边界在实际计算中尤其重要。若直接计算公式里的 N1-s/(s-1),在非常接近 s=1 时可能遇到大数相减,造成有效数字损失。此时适合改用减去主部后的表达式、局部展开,或提高任意精度,而不是简单地增大求和项数。
四、另一条思路:狄利克雷η函数
有时也会从交错级数入手,定义狄利克雷η函数:
η(s) = Σn=1∞ (-1)n-1/ns
在 Re(s) > 1 时,拆分ζ级数中的奇数项和偶数项,可得:
η(s) = (1-21-s)ζ(s)
因此在分母非零处有 ζ(s)=η(s)/(1-21-s)。η级数在 Re(s) > 0 时收敛,并可借助狄利克雷判别法说明其在该半平面内给出解析函数。这使它成为理解 0 < Re(s) < 1 时ζ函数的一种便捷工具。
不过,这个商式有一个容易遗漏的细节:分母 1-21-s 还会在 s=1+2πik/log 2(k 为整数)处为零。除 s=1 外,这些点并不是ζ函数的极点;商式中的表面奇点会消去。直接做浮点除法时,分子和分母可能同时接近零,数值误差被放大。因此,η公式适合说明关系,也可用于一定范围内的计算,但不能不加判断地把它当作全平面上稳定的计算公式。
还要注意,η的原始交错级数不是在整个复平面都收敛。它在 Re(s) > 0 收敛,并不能单凭这条级数把ζ函数延拓到任意靠左的区域。若要继续向左延拓,需用别的表示、欧拉变换或函数方程等方法。
五、欧拉–麦克劳林近似的可运行示例
下面的 Python 示例使用 mpmath 的任意精度复数运算,实现欧拉–麦克劳林公式中前若干个显式项。它返回的是截断近似,不包含余项,也不提供误差上界。代码将计算结果与 mpmath.zeta 的结果作比较;后者是用于核对的数值函数,不是本实现的推导依据。
安装依赖:
python -m pip install mpmath
完整程序:
import mpmath as mp
def zeta_em(s, N=20, p=8):
"""
欧拉-麦克劳林截断近似 ζ(s)。
N: 正整数;先直接求和到 N-1,再近似处理尾和。
p: 非负整数;加入 p 个伯努利修正项。
返回值不含余项,因而不是带误差保证的精确结果。
"""
s = mp.mpc(s)
if not isinstance(N, int) or isinstance(N, bool) or N < 1:
raise ValueError("N 必须是正整数")
if not isinstance(p, int) or isinstance(p, bool) or p < 0:
raise ValueError("p 必须是非负整数")
if s == 1:
raise ValueError("ζ(s) 在 s=1 有极点,不能返回有限值")
total = mp.fsum(mp.power(n, -s) for n in range(1, N))
total += mp.power(N, 1 - s) / (s - 1)
total += mp.mpf("0.5") * mp.power(N, -s)
for k in range(1, p + 1):
rising = mp.rf(s, 2 * k - 1)
correction = (
mp.bernoulli(2 * k)
/ mp.factorial(2 * k)
* rising
* mp.power(N, 1 - s - 2 * k)
)
total += correction
return total
if __name__ == "__main__":
mp.mp.dps = 40 # 设置计算精度,单位为十进制有效数字
test_points = [
mp.mpc("0.5", "14.134725"),
mp.mpc("-2.5", "1.25"),
mp.mpc("2.0", "3.0"),
]
for s in test_points:
approx = zeta_em(s, N=30, p=10)
reference = mp.zeta(s)
print(f"s = {s}")
print(f"EM 近似 = {mp.nstr(approx, 25)}")
print(f"核对值 = {mp.nstr(reference, 25)}")
print(f"绝对差 = {mp.nstr(abs(approx - reference), 8)}")
print()
N 和 p 控制截断方式:增大 N 会直接计算更多项,增加 p 会加入更多伯努利修正。它们不是“越大越好”的精度旋钮。伯努利数增长很快,浮点舍入、消去误差和渐近展开的行为都会影响结果;在某些参数下,增加修正项可能先改善、随后反而恶化近似。应通过改变 N、p 并观察结果是否稳定来做基本检查,要求可靠误差界时则需要专门的余项估计或经过验证的数值算法。
代码把 s 精确等于 1 的输入拒绝掉,因为ζ函数在该点没有有限值。它没有把所有“很接近 1”的输入都拒绝:这类输入在数学上可以计算,但可能需要更多精度,且当前的朴素写法不保证数值稳定。若把输入改成十进制字符串再传给 mp.mpc,通常比先用 Python 的二进制浮点数构造近似值更适合高精度计算。
程序中的 range(1, N) 对应 1 到 N-1,所以 N=1 时有限和为空,这与公式约定相符。上升阶乘使用 mp.rf(s, m),避免了手写循环。示例里的复幂底数 N 始终是正实数,因此不存在复对数分支选择的问题。
六、用代码验证时该看什么
最直接的检查是比较截断结果与高精度参考值的差,并分别改变 N 和 p。例如对同一个复数点,可以尝试 (N,p)=(20,6)、(40,8)、(60,10)。如果结果随参数变化明显,就不能仅凭某一次输出声称已经收敛。提高 mp.mp.dps 只会提高运算可用的精度,不会自动消除截断误差,也不会证明计算正确。
在 Re(s)>1,还可以把直接部分和与完整ζ值比较,但这主要是检查初始级数的截断表现。要检验延拓公式,更有意义的测试点是原级数不收敛、而ζ函数延拓仍有定义的区域,例如 s=1/2+it 或负实部的非极点位置。
测试点也应避开有特殊数值困难的位置。靠近 s=1 时,极点会导致函数值很大;靠近η商式的其他可去奇点时,分子分母的数值消去会影响结果。若计算目标是零点,得到一个数值接近零的值并不构成零点证明,还需要根的隔离、误差控制或其他严格验证方法。
七、适用场景与关键边界
适合使用欧拉–麦克劳林方法的情形
- 理解延拓机制。它清楚展示了级数尾部如何由积分、端点项和导数修正构成,也显示了极点
s=1从何而来。 - 做中等规模的数值计算。在避开极点、合理选择精度和截断参数时,它可用少量显式项估算ζ函数。
- 推导渐近性质。该方法不仅用于ζ函数,也常用于把离散求和与连续积分联系起来。
- 拓展到其他狄利克雷级数。对具有合适光滑性、且可控制导数的求和问题,类似的求和公式可用于构造延拓或渐近展开。
不应忽略的边界
- 极点不在定义域内。ζ函数在
s=1有简单极点、留数为1。任何返回该点有限ζ值的程序都需要说明它算的是别的量,例如减去主部后的函数。 - 公式中的余项有收敛条件。不能因为有限部分对任意复数都能写出来,就断言余项积分也在任意复数处收敛。延拓到更靠左区域时,要增加求和阶数并核对相应条件。
- 截断值不是自动带保证的值。本文代码刻意没有实现余项上界。稳定的输出不等于已经证明误差小;若应用需要严格误差控制,应使用有证明的界或经过验证的区间算法。
- 高阶不保证更准确。伯努利数和上升阶乘的量级可能很大,有限精度下会出现舍入和消去误差。调整工作精度、
N和p时要分别观察影响。 - 复幂的定义要说清楚。本例中的幂以正整数
N为底,使用实对数定义,没有分支歧义。换成一般复数底数时,必须说明使用哪个复对数分支。
八、常见错误及其纠正
- 把发散级数直接代入公式。在
Re(s)≤1时,原始ζ级数不收敛;延拓公式定义的是同一解析函数的延伸,不是原级数的普通和。应明确指出当前使用的是级数定义还是延拓后的表达式。 - 漏掉
s=1的极点。把1/(s-1)当成普通有限项,或者把程序在该点返回的结果当作ζ值,都会产生概念错误。要么避开该点,要么明确计算的是去极点后的函数。 - 把有限个修正项当成完整公式。截断公式还差一个余项。若未计算余项,就应称为截断近似,并交代没有误差保证。
- 以为η函数给出全平面收敛级数。η的原始交错级数在
Re(s)>0收敛,不会因此在整个平面收敛。用它向左延拓,需要另外的数学工具。 - 忽视商式中的可去奇点。从
ζ=η/(1-21-s)直接计算,可能在分母接近零处不稳定。公式表面出现除以零,不等于ζ在该处有极点。 - 把数值吻合误当作证明。一个库函数与自写近似相符,是有用的交叉检查,不是解析延拓正确性的证明,也不是误差严格受控的证据。
九、解析延拓与函数方程的关系
ζ函数还有著名的函数方程,它把 ζ(s) 与 ζ(1-s) 联系起来。一种常见写法是:
ζ(s) = 2s πs-1 sin(πs/2) Γ(1-s) ζ(1-s)
该式应在两边有定义的区域理解,并通过解析延拓解释特殊点处的消去与极限。函数方程能提供对称性信息,也常用于数值计算;不过,它本身不是可以忽略收敛条件的“万能代入式”。右侧包含伽马函数、正弦因子和另一处的ζ值,某些点上可能出现极点与零点相消。实际计算时,特殊点附近同样需要选用适合的表达式。
因此,欧拉–麦克劳林公式、η函数和函数方程可以看作彼此补充的工具:欧拉–麦克劳林展示尾和与积分的关系,并逐步扩展定义域;η函数在右半平面的特定区域提供简单表达;函数方程揭示全局对称结构,并有助于把某些区域的计算转到更合适的位置。三者都服从同一条原则:先确认解析区域和极点,再检查表达式在目标点是否有效。
结语
理解ζ函数的解析延拓,可以从一个清晰的链条开始:原级数在 Re(s)>1 收敛;欧拉–麦克劳林公式将尾和写成积分、端点项、伯努利修正和余项;积分项显露出 s=1 的简单极点;增加修正阶数则能把余项表达式的有效范围逐步向左扩展。这样得到的延拓在除 s=1 外的复平面上定义,而原始级数在新区域仍然发散。
对于计算,应把数学定义、有限截断和误差保证分开。本文代码可运行、可修改,适合演示和探索;它并不替代带余项控制的数值方法。牢记这个区别,既能正确理解诸如 ζ(-1)=-1/12 的延拓值,也能避免在极点附近、可去奇点附近或高精度计算中,把看似合理的数值误认为可靠结论。









