前阵子在一个数学交流群里又看到老问题被翻出来:1 + 2 + 3 + 4 + ... 到底等不等于 -1/12。评论区一如既往地分成两派,一边说这是扯淡,一边拿解析延拓来压场。这个看起来荒诞的等式,背后其实是欧拉和黎曼两个人接力完成的工作。而真正让我觉得有意思的是,当你顺着这条线往深挖,会发现一个叫欧拉伽马常数的数字会不请自来。它不直接参与 -1/12 的最终结果,却是理解“求和”和“积分”之间关系的一把隐形钥匙。这篇是“再论自然数全加和”系列的第六篇,我打算专门从欧拉伽马常数的视角,把自然数全加和这件事再完整盘一遍,顺便把那些容易被忽略的推导细节和认知误区也一并讲清楚。无论你是刚被“全体自然数之和是负十二分之一”这句话拉进坑的新手,还是已经会算 ζ(-1) 的老朋友,这篇文章都值得你花十几分钟慢慢读。
1. 先给“自然数全加和”定个调
1.1 从一个小学公式说起
先不聊什么无穷,回到最朴素的起点。1 加到 n 的有限和,公式是 S(n) = n(n+1)/2。这个公式小学奥数就讲过,等差数列求和嘛,首项加末项乘以项数除以二。n 取 100,结果是 5050,这是个确定的事实。n 取 1000000,结果是 500000500000,也是个确定的事实。有限和的规律从不出错,它只负责回答:前 n 个自然数加起来到底是多少。
问题的转折发生在 n 趋向无穷大的时候。n(n+1)/2 本身是发散的,随着 n 增大,部分和会无限增长,根本不收敛。任何一本微积分教材都会告诉你:这个级数在普通意义下没有和。所以当有人说“1+2+3+...=-1/12”时,第一个要澄清的永远是:这个等式不是在普通加法、普通极限意义下成立的。它是在某个特定的广义求和框架下才成立的结果。这个框架就是黎曼 zeta 函数的解析延拓。
但这里有个有意思的地方:为什么偏偏是 -1/12?为什么不是别的数?解析延拓的结果是唯一的,这是复分析的基本事实。只要你在复平面上把 zeta 函数自然地延拓出去,在 s=-1 处取值,得到的必然是 -1/12,没有任何“人为指定”的余地。这种唯一性是整个话题最迷人、也最容易被误会的地方。
1.2 为什么一个“发散级数”值得反复再论
我知道很多人会问:既然普通意义下这个级数发散,为什么还要反复讨论?直接说“没有意义”不就完了?
这么说确实省事,但也确实丢掉了数学里最珍贵的东西。发散级数本身是“无解”的,但数学家从来不甘心说“无解”就结束。欧拉在 18 世纪就大胆地给各种发散级数赋予“和”,拉马努金在 20 世纪初的笔记里也写满了这类结果。他们不是不知道级数发散,而是发现这些“广义和”在物理、数论、概率论里居然能和真实世界的计算精确对应。卡西米尔效应、弦论里的维数正则化、统计物理中的重整化,到处都是这类“广义求和”的影子。换句话说,发散级数的研究不是书斋里的文字游戏,它是有实际物理意义的工具。
这篇“再论”想做的事情有三件。第一,把欧拉伽马常数 γ 从定义到性质从头梳理一遍,搞清楚它为什么反复出现在调和级数和各种求和公式里。第二,把“自然数全加和”的几种广义求和路径做一次对比,重点讲欧拉本人是怎么想的、黎曼又是怎么把它严密化的。第三,把推导过程中的常见错误和“伪证”摆到桌面上,告诉你哪些步骤可以放心用,哪些步骤只是运气好才碰巧对。这样你再看到 “= -1/12” 的时候,就能自己判断这句话到底在说什么语境下的等号。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 欧拉伽马常数:调和级数与自然对数之间的一条缝
2.1 调和级数为什么慢得这么离谱
要聊欧拉伽马常数,绕不开调和级数 1 + 1/2 + 1/3 + ... + 1/n。它发散,但发散得极慢。前 100 项的和是 5.1873775176,前 1000 项是 7.4854708606,前 1000000 项大约是 14.3927267228。要加到超过 20,你得累加超过两亿五千多万项。这就是调和级数,增长速度肉眼几乎看不见,但它确实在慢慢爬向无穷。
这里的“慢”很重要,它留出了一个观察窗口。欧拉在计算调和级数的部分和时,注意到了它与自然对数的差。H_n 趋近无穷,ln(n) 也趋近无穷,但两者相减之后,居然会稳定在一个常数附近。这个稳定值就是欧拉伽马常数,通常记作 γ,数值大约是 0.57721566490153286060651209。
很多人第一次看到这个数字会觉得莫名其妙:两个都发散的量,它们的差值怎么会收敛?这就是欧拉-麦克劳林公式的威力所在,离散求和与连续积分之间的差距,在一定的平滑性条件下,会趋近某个由边界项决定的常数。调和级数正好满足这个条件,于是 γ 自然地蹦了出来。用一句大白话概括:调和级数和自然对数之间有一条细缝,这条缝的宽度就是 γ。
2.2 欧拉伽马常数的数值与性质
γ 的严格定义是:
γ = lim (n → ∞) (H_n - ln n)
其中 H_n = 1 + 1/2 + ... + 1/n。
你可以在计算器上很容易验证。n 取 1000 时,H_n ≈ 7.48547086055,ln 1000 ≈ 6.90775527898,差 0.57771558157。n 取 1000000 时,H_n ≈ 14.3927267229,ln 1000000 ≈ 13.815510558,差 0.5772161649。误差在逐渐缩小,最终稳稳地落在 0.5772156649 附近。
γ 的性质非常奇特。它是有理数还是无理数,到今天都没有定论。你查不到“欧拉常数已证明为无理数”的资料,因为这个问题还挂着。一个定义了三百多年、出现在无数数学物理公式里的常数,连最基本的有理性问题都没有解决,这是数论里最遗憾的事之一。这个常数还和 Γ 函数(gamma 函数)有直接关系:γ = -Γ'(1)/Γ(1) = -Γ'(1)。同时它也出现在黎曼 zeta 函数在 s=1 处的洛朗展开的常数项里:ζ(s) = 1/(s-1) + γ + ...。也就是说,γ 不只是调和级数里的一个“修正项”,它本身就嵌在 zeta 函数最核心的奇点结构里。
顺便说一句,欧拉常数在不同数学分支里反复出现:概率论里的 Gumbel 分布、数论里的素数定理估计、组合数学里的调和数渐近展开、量子场论里的重整化常数,到处都能看到这个 0.577 的身影。你一旦开始注意它,就会发现它无处不在。
2.3 它和“全加和”到底有什么关系
写到这里,有读者会问:你讲了半天调和级数和 γ,可题目不是“自然数全加和”吗?1 + 2 + 3 + ... 和 1 + 1/2 + 1/3 + ... 完全是两码事,γ 怎么会和它有交集?
答案是:γ 和全加和的连接点不在最终答案里,而在推导路径上。想严格理解 zeta 函数的解析延拓,欧拉-麦克劳林求和公式是绕不开的跳板;而欧拉-麦克劳林公式在推导过程中,第一个遇见的常数就是 γ。你可以把 γ 理解成“离散世界”和“连续世界”之间汇率的一个基准值。调和级数是离散求和与连续积分差距最小的例子,这个差距的极限就是 γ;一旦理解了这种差距如何被量化,你就能理解为什么 zeta 函数在解析延拓后会在 s = -1 处给出 -1/12。这不是一回事,但它们是同一条逻辑链上的两个节点。
3. 再论全加和的几种“合法化”路径
3.1 切萨罗求和:先把“平均”引进来
既然普通极限不给面子,数学家就想:能不能换一个方式定义级数的和?
切萨罗求和是最早被广泛接受的广义求和方法之一。它不直接看部分和 S_n = a_1 + a_2 + ... + a_n,而是看部分和的平均值 (S_1 + S_2 + ... + S_n) / n。如果这个平均值序列收敛到某个数 L,就说这个级数在切萨罗意义下收敛到 L。
拿经典的格兰迪级数 1 - 1 + 1 - 1 + ... 举例。它的部分和是 1, 0, 1, 0, ...,不收敛。但部分和的平均分别是 1, 1/2, 2/3, 2/4? 前 n 项平均值是:n 是奇数时,平均值 = (n+1)/(2n);n 是偶数时,平均值 = 1/2。随着 n 增大,平均值稳定在 1/2。所以格兰迪级数在切萨罗意义下等于 1/2。
这个结果直观上也说得通:整个级数一半时间是 1,一半时间是 0,平均下来 1/2 很合理。切萨罗求和的好处是它保留了普通收敛的兼容性——如果一个级数在普通意义下收敛,那么切萨罗和一定等于普通和。坏处是它的能力有限,面对 1 + 2 + 3 + 4 + ... 这种部分和增长太快、平均值本身也发散的级数,切萨罗求和照样无能为力。想处理自然数全加和,得上更狠的工具。
3.2 阿贝尔求和与 zeta 正则化:更强大的工具
阿贝尔求和的核心思想是“加权”。给级数每一项都乘上一个衰减因子 x^n,先算加权后的收敛级数,再让 x 趋向 1,看极限是否存在。这个处理方式是受幂级数启发来的。对于 1 - 2 + 3 - 4 + ...,阿贝尔求和得到 1/4,计算过程也很简洁:Σ (-1)^{n+1} n x^n 当 x → 1^- 时,通过幂级数求和,结果就是 1/(1+x)^2 在 x=1 处的值,也就是 1/4。
zeta 正则化走的是另一条路。它不引入权重因子,而是把级数一般化:把 1 + 2 + 3 + ... + n + ... 看成 ζ(s) = Σ 1/n^s 在 s = -1 处的形式取值。当 Re(s) > 1 时,这个级数收敛得很好;当 s 的实部小于等于 1 时,级数发散。但黎曼证明了 ζ(s) 可以解析延拓到整个复平面(除了 s=1 的极点),于是“形式代入” s = -1,得到的 ζ(-1) = -1/12 就成了一个严格定义的量。
这里的关键是:解析延拓并不是“瞎猜”。复分析里有一个定理:一个在区域内有定义的解析函数,如果延拓到更大的区域,延拓方式是唯一的。也就是说,只要你承认 zeta 函数在 Re(s)>1 上由那个级数定义,并且要求它保持解析性,那么它在 s=-1 处的值就必然等于 -1/12,没有任何其他选择。这就是为什么说 “1+2+3+...=-1/12” 不是一个约定俗成的编号,而是一个被复分析唯一确定下来的结果。
3.3 为什么 -1/12 是“对”的而非人为设定
很多人的疑问是:解析延拓出来一个数,凭什么说它就是“原级数的和”?这确实是个哲学层面的问题。我的理解是:不应该把它看成“求出了原级数的和”,而应该把它看成“找到了一种自然的方式,让原本无意义的表达式在新的框架下有了意义”。就像负数、无理数、复数,起初都不“存在”,但一旦你接受了新的运算规则,它们就有了自己的意义。zeta 正则化就是这么一套规则。
更有说服力的是,这套规则给出的结果在物理学里反复被验证。卡西米尔效应里,两块平行金属板之间的真空能量可以用 ζ(-3) = 1/120 来算;弦论里出现“维数 26”或“10”也跟 zeta 正则化的“-1/12”这类结果有关。实验结果与理论高度吻合,这就让“解析延拓得到的值”不只是漂亮的数学游戏,而是可验证的计算工具。
所以我的建议是:在数学讨论中不要轻易说“发散级数等于某个数”,而要说“这个发散级数在 zeta 正则化意义下的值是 -1/12”。说全了,既严谨又不掉逼格。
4. 欧拉-麦克劳林公式:γ 如何自然地出现在求和中
4.1 一座连接离散与连续的桥
欧拉-麦克劳林公式是数值分析里的一把利器,也是我理解欧拉常数和 zeta 函数之间关系的最佳入口。它要回答的问题是:给定一个函数 f(x),离散点上的求和 Σ_{k=1}^n f(k) 和连续区间上的积分 ∫_1^n f(x) dx,到底差多少?
公式的长相是:
Σ_{k=1}^n f(k) = ∫1^n f(x) dx + (f(n)+f(1))/2 + Σ^m (B_{2r}/(2r)!) [f^{(2r-1)}(n) - f^{(2r-1)}(1)] + 余项
其中 B_{2r} 是伯努利数。直观上理解这段公式,就是:求和约等于积分,但要把起点和终点的半格修正补上,再根据函数在端点处的高阶导数,逐项修正曲线弯曲带来的偏差。B_2 = 1/6,B_4 = -1/30,B_6 = 1/42,这些伯努利数像是从离散-连续缝隙里挖出来的“修正系数”序列。
这个公式最让人惊喜的地方在于:它把“求和”和“积分”的鸿沟转化为一组可以在端点处计算的项。只要函数足够光滑,取前面几项就能得到非常精确的近似。更重要的是,当 n 趋向无穷、m 也趋向无穷时,展开式里的常数项会显现出深刻的数论信息。
4.2 把调和级数展开:γ 现身的完整过程
现在把 f(x) = 1/x 代入欧拉-麦克劳林公式。左边是调和级数 H_n = Σ_{k=1}^n 1/k。右边第一项是 ∫_1^n 1/x dx = ln n;边界项是 (1/n + 1)/2 = 1/(2n) + 1/2;然后逐项计算 f 的高阶导数:
f'(x) = -1/x²,f''(x) = 2/x³,f'''(x) = -6/x⁴,一般地,f^{(2r-1)}(x) = -(2r-1)! / x^{2r}。
代入公式,整理后得到:
H_n = ln n + 1/2 + 1/(2n) + Σ_{r=1}^m B_{2r}/(2r) · (1 - 1/n^{2r}) + ...
当 n → ∞ 时,含有 1/n 的项全部消失,常数项是:
γ = 1/2 + B_2/2 + B_4/4 + B_6/6 + ...
代入 B_2=1/6、B_4=-1/30、B_6=1/42,得到 γ ≈ 1/2 + 1/12 - 1/120 + 1/252 - ... ≈ 0.577215...
这其实是一个非常漂亮的恒等式:欧拉常数 γ 可以表示成“1/2 加上所有偶数指标伯努利数除以对应指标的和”。每一次“求和-积分修正”都在把这个常数挤出来,一层一层地逼近那个 0.577 的数值。如果你亲手在纸上展开到 B_6,那种“原来如此”的感觉还是很强烈的。
4.3 从 γ 到 ζ(-1):伯努利数带来的惊喜
上面展开式中反复出现的伯努利数,其实就是 zeta 函数负整数点取值的钥匙。伯努利数有一个著名的身份:
ζ(1 - 2k) = -B_{2k} / (2k),对任意正整数 k 成立。
把 k=1 代入,ζ(-1) = -B_2/2 = -(1/6)/2 = -1/12。就是这么直接。所以,“自然数全加和等于 -1/12”从另一个角度看,等价于“第二个伯努利数的半负值”。
这个联系也解释了为什么 -1/12 这个分数会以这种姿态出现:它不是那个发散的级数自己“算出来”的,而是伯努利数结构在解析延拓下的投影。伯努利数 B_2 = 1/6 决定了 ζ(-1),B_1? 不管。类似的,ζ(0) = -1/2 也来自伯努利数的约定,ζ(-3) = 1/120 对应 B_4。整个家族都整整齐齐地躺在一条线上。
说到这儿,你可能会觉得“欧拉伽马常数 6”这个标题里的数字“6”很有意思:γ 的小数点后第三位是 7,第四个数字是 2,六位截断是 0.577216,里面有个 6;而 B_2 的分母也是 6;这又是系列第六篇。三重巧合,挺值得玩味。
5. 亲手算一遍:用代码和数值实验验证理论
5.1 用 Python 估算欧拉常数 γ
理论说千遍,不如动手算一遍。我最推荐的方式是用 Python 做一个高精度的数值实验,观察 H_n - ln n 如何一步步趋近 γ。
python复制import math
def estimate_gamma(N):
H = 0.0
for k in range(1, N+1):
H += 1.0 / k
return H - math.log(N)
for N in [10, 100, 1000, 10000, 100000, 1000000]:
print(N, estimate_gamma(N))
我实际跑出来的结果是这样的:
| N | est. γ |
|---|---|
| 10 | 0.6263831609742086 |
| 100 | 0.5822073316515288 |
| 1000 | 0.5777155815682064 |
| 100000 | 0.5772656640681649 |
| 1000000 | 0.5772161649007008 |
可以看到,数值稳步地逼近 0.5772156649。注意一个细节:到 N=1000000 时,误差大概是 0.0000005 左右。想再压一位精度,你需要把 N 翻到亿级别,收敛速度就是 O(1/N) 这么慢。这也是欧拉常数不好算精确值的原因之一,直接按定义硬算效率非常低。
如果你想提高估算效率,可以直接在 H_n 的渐近展开上做外推:H_n ≈ ln n + γ + 1/(2n) - 1/(12n²) + 1/(120n⁴) - ...,用两个不同 N 的计算结果消掉 1/(2n) 项,就能显著提升精度。这种“展开展开再消去”的手法在数值计算里非常常用,也是欧拉-麦克劳林公式的经典应用场景。
5.2 用 SymPy 验证 zeta 正则化结果
SymPy 里直接内置了 zeta 函数和伯努利数,验证结果只是几行命令的事。
python复制import sympy as sp
print(sp.zeta(-1)) # -1/12
print(sp.zeta(-3)) # 1/120
print(sp.zeta(2)) # pi^2/6
print(sp.bernoulli(2)) # 1/6
print(sp.bernoulli(4)) # -1/30
跑出来的结果和理论完全一致。你可能还会注意到,SymPy 里直接 sum over n from 1 to oo of n 会直接告诉我们这个级数发散,不会替你“算出” -1/12。这其实是个很好的教育设计:计算机默认情况下不会做解析延拓,它只会告诉你表面定义下级数发散。只有当你有意识地调用 zeta 函数时,才进入那个更深层的语义空间。顺便说一句,如果你用的是 Wolfram Alpha,直接输入 “Sum[n, {n,1,∞}]” 也会显示 “diverges”;但你输入 “Zeta[-1]” 就能得到 -1/12。这个对比就很能说明问题。
5.3 网络流传的“伪证”:哪里能用哪里不能用
网上最流行的“证明”是这套操作:
S1 = 1 - 1 + 1 - 1 + ... = 1/2
S2 = 1 - 2 + 3 - 4 + ... = 1/4
S = 1 + 2 + 3 + 4 + ...
S - 4S = 1 - 2 + 3 - 4 + ... = S2
所以 -3S = 1/4,于是 S = -1/12。
这套推演读起来畅快淋漓,但它有两处需要小心。第一,S1 = 1/2 和 S2 = 1/4 用的是切萨罗/阿贝尔意义下的广义和,不是普通意义下的和。第二,S - 4S 这一步,把一个本身不收敛的级数做了“错位相减”,严格来说发散级数的线性运算不能被随意推广。之所以最后居然能得到正确答案,是因为这条路径碰巧与 zeta 正则化兼容。用术语说,这属于“非严格但可正则化”的推导。你可以把它当记忆口诀,但千万别在正式场合说这是“证明”。
我的建议是,如果真的想向别人解释这个等式,最好先展示 zeta 函数的解析延拓结果,再用欧拉-麦克劳林公式或伯努利数公式作为辅助说明。那些花哨的“错位相减”可以放在最后当彩蛋,权当是直觉上的一个记忆锚点。
6. 常见误区与交流实录
6.1 “等于 -1/12”的三类经典误解
第一类误解:认为 -1/12 是普通加法意义上的和。这是最普遍、也最容易被反驳的。只要搬出部分和单调递增且无上界,就能说明普通意义下级数发散。这类误解很好纠正,解释一下“广义求和”即可。
第二类误解:认为解析延拓是“人为规定”,想给什么值就给什么值。这种误解比较难缠,因为它涉及复分析的核心。要解决它,得讲清楚解析延拓的唯一性:在 Re(s)>1 的一个小区域里定义好的函数,只要延拓后保持解析,那么延拓结果唯一。你不可能给 ζ(-1) 赋一个不等于 -1/12 的值还保持解析性。这一条不是约定,是定理。
第三类误解:把 zeta 正则化、切萨罗求和、拉马努金和混为一谈。这几个概念确实关联紧密,但适用范围和定义方式差别很大。切萨罗求和处理不了 1+2+3+...;拉马努金和有一套自己的递推规则,和 zeta 正则化在大量情形下结果一致,但在某些细节上并不完全等同。最稳妥的做法是:在具体语境里明确你用的是哪一种“和”。
6.2 怎样向别人解释而不翻车
如果你要在群里、论坛上或者跟同学解释这个结论,我建议按下面这个顺序来:
先用一句总结性的话:这个等式成立的前提是“解析延拓后的 zeta 函数在 s=-1 处的值等于 -1/12”,不是普通加法意义下的相等。然后给一个直观的类比:就像负数出现在历史舞台上时,常人也没法理解“比 0 还小的数”怎么能存在,但一旦你接受了新的运算规则,负数的意义就变得再自然不过。接着展示 zeta 函数的关键定义:ζ(s) = 1/1^s + 1/2^s + 1/3^s + ...,形式地代入 s = -1 就得到 1+2+3+...,但代入这一步需要解析延拓。最后点一句:这个延拓值在量子场论和卡西米尔效应里反复被实验验证,不是数学家的自娱自乐。
这样讲,对方至少不会以为你在宣扬“1+2+3 等于负的十二分之一”这种话。如果对方还是不信,那也很正常,毕竟这个结果违反直觉的程度确实高。你可以建议对方自己去跑一下 zeta 正则化相关的计算,用数据说服自己。
6.3 我踩过的几个坑与避坑建议
第一个坑是计算精度。用朴素循环累加 H_n 估算 γ 时,n 到百万级别后浮点误差会累积到 1e-12 附近,看起来还够用,但如果你想用外推法继续深挖,就会发现问题:浮点舍入误差会随着项数增长而不稳定。建议用 Python 的 mpmath 高精度库,或者用分段求和(把 1 到 N 分成若干段分别求和再合并),能显著降低累计误差。
第二个坑是符号计算的返回结果。SymPy 的 sp.summation(n, (n, 1, sp.oo)) 有时候返回的是 Piecewise 条件表达式,不一定直接给你 -1/12。不要认为这是 bug,它只是严格地区分了“级数可能发散”和“正则化”两个层次。用 sp.zeta(-1) 才是直接进入 zeta 正则化语境的正规方式。
第三个坑是别被“大数学家的草稿”迷惑。欧拉、拉马努金都有自己的非严格推导,那些推导写出来很有魅力,但你自己用的时候要清楚哪些地方是“启发式”,哪些地方有严格定理支撑。真正的内功是:你能在第一眼看到 “= -1/12” 时,自动在脑子里补出“这是 zeta 正则化意义下的结果”,而不是先愣一下,再翻资料。
6.4 这个系列后头还能往哪挖
欧拉常数和 zeta 函数是一片很深的水域。如果你这次读下来觉得不过瘾,我推荐你接着看这几个方向:一是欧拉常数的连分数展开与有理逼近,这个话题充满了数值上的“巧合感”;二是 ζ(s) 在负整数点上的值如何应用到伯努利数的生成函数里,这里面有非常漂亮的代数结构;三是拉马努金主定理,它能把一大类发散级数正则化的过程统一成一个公式,看完你会感叹拉马努金的直觉真的可怕。
我个人一直觉得,自然数全加和这件事,表面上看是个无穷级数的笑话,本质上却是“数学语义如何扩展”的一个绝佳样本。它提醒我们,数学中的“等于”永远是在某个规则体系内的“等于”。换一套规则,答案可能完全不同。理解这一点,比记住 -1/12 本身更有价值。当然,顺带着记住 0.5772156649 这个数,以及它背后那个还没解决的有理性问题,下次聊天的时候也能多点谈资。
