作者:卢昌海
围捕零点
时下流行一种休闲方式叫做DIY(DoItYourself),讲究自己动手做一些原本只有工匠才做的东西,比方说自己动手做件陶器什么的。在像我这样懒散的人看来这简直比工作还累,可如今许多人偏偏就兴这个,或许是领悟了负负得正(累累得闲?)的道理吧。既是大势如此,我们也乐得共襄盛举,安排“休闲”一下,让大家亲自动手用Riemann-Siegel公式来计算一个Riemannζ函数的非平凡零点。
DIY一般有个特点,那就是课题本身看起来虽颇见难度,实际做起来却通常是捡其中相对简单的来做(以免打击休闲的积极性)。我们计算零点也是如此,挑其中相对简单——即容易计算——的非平凡零点来计算。那么什么样的非平凡零点比较容易计算呢?显然是那些听Riemann的话,乖乖躺在临界线上的——因为不在临界线上的非平凡零点即便有也绝不可能容易计算,否则Riemann猜想早被推翻了。
如我们在上节中所见,Riemann-Siegel公式包含了许多计算量很大的东西,其中最令人头疼的是求和,因为它使计算量成倍地增加。不过幸运的是那个求和是对n2<(t/2π)的自然数n进行的,因此如果t<8π≈25,求和就只有n=1一项。这显然是比较简单的,因此我们狡猾的目光就盯在了这一区间上。在这一区间上,Riemann-Siegel公式简化成为:
Z(t)=2cos[θ(t)]+R(t)
这就是我们此次围捕零点的工具。
在正式围捕之前,我们先做一点火力侦察——粗略地估计一下猎物的位置。我们要找的是使Z(t)为零的点,直接寻找显然是极其困难的,但我们注意到2cos[θ(t)](通常被称为主项)在θ(t)=(m+1/2)π时为零(m为整数),这是一个不错的出发点。由上节中θ(t)的表达式不难证明,在所有这些使2cos[θ(t)]为零的θ(t)中,θ=-π/2(即m=-1)是使t在t<25中取值最小的(当然,别忘了t是正实数),它所对应的t为t≈14.5。这是我们关于零点的第一个估计值。纯以数值而论,它还算不错,相对误差约为百分之三。
接下来我们对这个估计值进行一次修正。修正的理由是显而易见的,因为t≈14.5时R(t)明显不为零。为了计算R(t),我们注意到t≈14.5时(t/2π)1/2≈1.5,因此R(t)中的参数N——即(t/2π)1/2的整数部分——为1,p——即(t/2π)1/2的分数部分——约为0.5。由此可以求出R(t)中的第一项——即C0(t/2π)-1/4——约为0.3。
为了抵消这额外的0.3,我们需要对t进行修正,使2cos[θ(t)]减少0.3。我们采用最简单的线性近似Δt≈Δ{2cos[θ(t)]}/{2cos[θ(t)]}'来计算这一修正值。为此注意到2cos[θ(t)]在t≈14.5处的导数{2cos[θ(t)]}'为-2θ'(t)sin[θ(t)]≈-2(1/2)ln(14.5/2π)sin(-π/2)≈0.83。由此可知t需要修正为t+Δt≈14.5-0.3/0.83≈14.14。这个数值与零点的实际值之间的相对误差仅为万分之四。但是需要提醒读者的是,这种估计——无论从数值上讲多么高明——都不足以证明零点的存在,而至多只能作为围捕零点前的火力侦察。
那么究竟怎样才能证明零点的存在呢?我们在上节中已经叙述了基本思路,那就是通过计算Z(t)的符号,如果Z(t)在临界线上某两点的符号相反,就说明Riemannζ函数在这两点之间存在零点。我们上面所做的估计就是为这一计算做准备的。现在我们就来进行这样的计算。由于我们已经估计出在t=14.14附近可能存在零点,因此我们就在14.1≤t≤14.2的区间上撒下一张小网。如果我们的计算表明Z(t)在这一区间的两端,即t=14.1与t=14.2,具有不同的符号,那就证明了Riemannζ函数在t=14.1与t=14.2之间存在零点[注一]。
下面我们就来进行计算:
对于t=14.1,(t/2π)1/2≈1.498027,θ(t)≈-1.742722。因而主项2cos[θ(t)]≈-0.342160,剩余项R(t)中p≈0.498027,从而其中第一项(即C0项)为C0(t/2π)-1/4≈0.312671。由这两部分(即主项及剩余项中的第一项)可得:
Z(14.1)≈-0.342160+0.312671=-0.029489
类似地,对于t=14.2,(t/2π)1/2≈1.503330,θ(t)≈-1.702141。因而主项2cos[θ(t)]≈-0.261934,剩余项R(t)中p≈0.503330,从而其中第一项(即C0项)为C0(t/2π)-1/4≈0.312129。由这两部分(即主项及剩余项中的第一项)可得:
Z(14.2)≈-0.261934+0.312129=0.050195
显然,如我们所期望的,Z(14.1)与Z(14.2)的符号相反,这表明在t=14.1与t=14.2之间存在Riemannζ函数的非平凡零点。当然,我们还没有考虑C1~C4项。这些项中带有C0的各阶导数,计算起来工作量非同小可,有违休闲的目的,因此就只好偷点懒了。熟悉计算软件的读者可以动用Maple、Matlab或Mathematica之类的计算软件来算一下。对于其他读者来说,我们就把算得的结果直接列在下表中了(其中包括我们手工算得的结果):
Z(t)-0.0274460.052042
从表格所列的结果中可以看到,剩余项中的高阶项的贡献虽然有所起伏,但与第一项相比在总体上是很小的。对我们来说,这当然是很令人欣慰的结果,因为它表明我们手工所能计算的部分给出的贡献是主要的。这还是t较小的情况,随着t的增加,由于高阶项中所含t的负幂次较高,其贡献会变得越来越小[注二]。不过要严格表述这种趋势并予以证明,却绝非轻而易举。事实上Riemann-Siegel公式作为Z(t)的渐进展开式,其敛散性质与误差估计都是相当复杂的。
现在我们知道了Riemannζ函数在t=14.1与t=14.2之间存在零点。如果我们再仔细点,注意到Z(14.1)与Z(14.2)距离Z(t)=0的远近之比为0.027446:0.052042,用线性内插法可以推测零点的位置为:
t≈14.1+(14.2-14.1)×0.027446/(0.027446+0.052042)≈14.1345。
这与现代数值t=14.1347的相对偏差只有不到十万分之二!即使只估计到C0项(这是我们自己动手所及的范围),其误差也只有不到万分之二(请读者自行完成内插法计算并验证误差)。
好了,猎物在手,我们的简短休闲也该见好就收了。大家是否体验到了一些成就感呢?要知道,Riemannζ函数的零点可是在Riemann的论文发表之后隔了四十四年才有人公布计算结果的哦。当然,我们用了Riemann-Siegel公式,但这没什么,一个好汉三个帮嘛!再说了,DIY哪有真的百分之百从头做起,连工具设备都包括在内的?想象一下,如果你DIY出来的陶器能够把缺陷控制在万分之二以内,那是何等的风光?当然,倘若你可以退回一百多年,把这个结果抢在Gram之前公布一下,那就更风光了。
在本节的最后,还有一件可能让大家有成就感的事情要提一下。那就是我们所用的估计零点的方法——即从使2cos[θ(t)]为零的点出发,然后依据R(t)的数值对其进行修正[注三],最后再用Z(t)的符号变化来确定零点的存在——暗示着Riemannζ函数在临界线上的零点数目大致与cos[θ(t)]的零点数目相当。而后者大约有(请大家DIY)θ(t)/π~(t/2π)ln(t/2π)-(t/2π)个。不知大家是否还记得,这正是我们在第五节中介绍过的Riemann那三个命题中迄今无人能够证明的第二个命题!当然,我们这个也不是证明(真可惜,否则的话,嘿嘿……),但这应该使大家对我们的休闲手段之高明有所认识吧?
注释
1.要注意的是,Z(t)在一个区间的两端具有不同符号只是Riemannζ函数在该区间内存在零点的充分条件,而非必要条件。换句话说,假如我们不幸发现Z(t)在我们所取的两点上具有相同的符号,我们并不能由此直接得出结论说Riemannζ函数在这两点之间不存在零点。至于这是为什么,请大家DIY。
2.但另一方面,随着t的增加,Riemann-Siegel公式中的求和所包含的项数会逐渐增加,因此计算的总体复杂程度并不呈现下降趋势。
3.对于求和中有不止一项的情形,修正所依据的将不仅仅是R(t),但思路是类似的。
二零零四年五月二十三日写于纽约
二零零四年五月二十三日发表于本站
二零一二年一月三十一日最新修订
来源:科学松鼠会