欢 迎 访 问 卢 昌 海 个 人 主 页

除了自己的无知,
我什么都不懂。

-苏格拉底

 
信 息
 
 
 
All English Contents
作品列表 | 电子图书
站长简介 | 常见问题
版权说明 | 电子邮箱
 
统 计
 
 
 
自 2008-02-01 以来
本文点击数
30,481
自 2008-02-01 以来
本站点击数
33,580,229
昨日点击数 5,942
今日点击数 756

站长在 Bluesky 新开了微博帐号
▷▷▷ 敬请关注 ◁◁◁

Riemann 猜想漫谈 (八)

- 卢昌海 -

If you could be the Devil and offer a mathematician to sell his soul for the proof of one theorem - what theorem would most mathematicians ask for? I think it would be the Riemann Hypothesis.

- H. Montgomery

上一篇 | 返回目录

十二. 休闲课题:围捕零点

时下流行一种休闲方式叫做 DIY (Do It Yourself), 讲究自己动手做一些原本只有工匠才做的东西, 比方说自己动手做件陶器什么的。 在像我这样懒散的人看来这简直比工作还累, 可如今许多人偏偏就兴这个, 或许是领悟了负负得正 (累累得闲?) 的道理吧。 既是大势如此, 我们也乐得共襄盛举, 安排 “休闲” 一下, 让大家亲自动手用 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 之类的计算软件来算一下。 对于其他读者来说, 我们就把算得的结果直接列在下表中了 (其中包括我们手工算得的结果):

  t=14.1 t=14.2
N 1 1
p 0.498027 0.503330
θ(t) -1.742722 -1.702141

2cos[θ(t)] -0.342160 -0.261934
C0 0.312671 0.312129
C1 0.000058 -0.000097
C2 0.001889 0.001872
C3 0.000001 -0.000002
C4 0.000075 0.000074

Z(t) -0.027466 0.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.027466:0.052042, 用线性内插法可以推测零点的位置为:

t ≈ 14.1 + (14.2 - 14.1) × 0.027466 / (0.027466 + 0.052042) ≈ 14.1345。

这与现代数值 t=14.1347 的相对偏差只有不到十万分之二! 即使只估计到 C0 项 (这是我们自己动手所及的范围), 其误差也只有不到万分之二 (请读者自行完成内插法计算并验证误差)。

好了, 猎物在手, 我们的简短休闲也该见好就收了。 大家是否体验到了一些成就感呢? 要知道, Riemann ζ 函数的零点可是在 Riemann 的论文发表之后隔了四十四年才有人公布计算结果的哦。 当然, 我们用了 Riemann-Siegel 公式, 但这没什么, 一个好汉三个帮嘛! 再说了, DIY 哪有真的百分之百从头做起, 连工具设备都包括在内的? 想象一下, 如果你 DIY 出来的陶器能够把缺陷控制在万分之二以内, 那是何等的风光? 当然, 倘若你可以退回一百多年, 把这个结果抢在 Gram 之前公布一下, 那就更风光了。

在本节的最后, 还有一件可能让大家有成就感的事情要提一下。 那就是我们所用的估计零点的方法——即从使 2cos[θ(t)] 为零的点出发, 然后依据 R(t) 的数值对其进行修正[注三], 最后再用 Z(t) 的符号变化来确定零点的存在——暗示着 Riemann ζ 函数在临界线上 0<t<T 的零点数目大致与 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), 但思路是类似的。

站长近期发表的作品

网友讨论选录

  • 卢昌海   (发表于 2024-01-01)

    新年伊始, 收到读者朱明亮君来信, 指出了本文的以下几处错误:

    1. 表格中 C1 和 C3 项对应于 t=14.2 的数值漏了负号;
    2. 表格中 Z(t) 对应于 t=14.1 的数值错成了 -0.027446 (应为 -0.027466);
    3. 上述第二处错误也出现在了正文用到该数值处 (计有三处)。

    以上错误均已在本站版本 (即本文) 中作了订正, 但这些错误也出现在了实体书中, 特向所有读者致歉。

    最后, 郑重感谢来信指正的朱明亮君。