Skip to content

调和级数的前 n 项和

在推导大模型 Decoder 的自注意力的算术强度时,遇到了如下的数列求和问题:

i=1Sout1Sin+i= i=1Sout1ii=1Sin1i

这涉及到求调和级数的前 n 项和。所以,本文来研究这个问题。

调和级数的敛散性

我们知道,p-级数具有如下敛散性

n=11np{ 发散,p1 收敛,p>1

p=1 时,原级数即为调和级数

n=11n

为了求出调和级数的前 n 项和,我们需要构造和函数

fn(x)=k=1nxkk

将调和级数表示成幂级数 fn(x)x=1 处的函数值 fn(1)。首先对 fn(x) 求一阶导数

fn(x)=k=1nxk1=1xn1x

两边积分,得到

fn(x)=1xn1xdxfn(1)=011xn1xdx+fn(0)=011xn1xdx

求解上述定积分需要借助 Gamma 函数和 Digamma 函数。

Gamma 函数和 Digamma 函数

我们知道,Gamma 函数的定义最初是为了快速计算阶乘的值。它满足

Γ(x)=xΓ(x1)

欧拉给出了 Gamma 函数的积分定义形式

Γ(x)=0+tx1etdt

Gamma 函数也被称为第二类欧拉积分。而 Digamma 函数的定义为伽玛函数的对数的导数,即

Ψ(x)=dlnΓ(x)dx=Γ(x)Γ(x)

对 Gamma 函数求导,有

Γ(x)=ddx0+tx1etdt=0+tx1etlntdtΓ(1)=0+etlntdt=01etlntdt+1+etlntdt=01et1tdt+1+ettdt=limn(k=1n1klnn)

这里省略了中间非常复杂的计算。不过,最终我们得到了一个极限,其中恰好包含调和级数和对数函数。如果能够证明这个极限收敛,就能求出调和级数的前 n 项和。

调和级数与对数函数的关系

首先给出结论:虽然调和级数以及极限

limnlnn

都发散,但是它们的差

γ=limnγn=limn(k=1n1klnn)

收敛。通过 γn 单调递减且有下界,可以证明这个极限存在。我们可以通过计算机求解出这个近似值为

γ0.5772156649

它被称作欧拉常数。目前,尚不能证明欧拉常数是有理数还是无理数。

这同时也说明了,调和级数和对数函数是同阶无穷大,即当 n

k=1n1klnn

至此,其实我们可以估算调和级数的前 n 项和为

k=1n1klnn+γ

并且可以证明

ln(n+1)<k=1n1k<lnn+1

Digamma 函数的积分形式

有了欧拉常数 γ,通过一系列推导,可以得到 Digamma 函数的积分形式

Ψ(x)=γ+011tx11tdt

做好了上述铺垫后,我们就可以用 Digamma 函数来计算调和级数的前 n 项和

k=1n1n=fn(1)=011tn1xdx=Ψ(n+1)+γ
最近更新