Я люблю проводить численные эксперименты. Процессор должен думать, а не простаивать. Напомню, что нетривиальные нули Зета функции Римана, расположенные симметрично относительно оси X, имеют вещественную часть равную 1/2 (что не доказано, может быть, у вас получится?), а мнимая часть у первых нулей равна (знак +/-, так как они расположены симметрично): 14.13, 21.02, 25.01, 30.42, 32.93...

Чем дальше, тем меньше расстояние между корнями, доказано, что в пределе

\lim_{n\to\infty} ln(n) \frac{z_{n+1} - z_n}{2\pi} = 1

где Zn - абсолютное значение мнимой части корня. То есть чем дальше, тем гуще расположены нули. Но давайте эти уменьшающие��я расстояния между корнями станут нашей путеводной звездой, они будут указывать нам, насколько сдвинуться вправо-вверх-влево-вниз. Заметьте, что такая последовательность направлений совпадает с направлением вращения фазы комплексного числа. То есть на первом шаге мы увеличиваем X на 14.13, потом Y на 21.03-14.13=6.9 и оказываемся в точке (14.13, 6.9). Дальше мы смещаемся влево на 25.01-21.02=3.99 и оказываемся в точке (10.14,6.9). Наконец, двигаемся вниз на 30.42-25.01=5.41 и попадаем в (10.14,1.49). Цикл из четырех движений закончен.

За несколько дней mpmath мне сгенерил 100 тысяч корней и я увидел интересную картину, после чего решил скачать готовые корни - тут: https://www.lmfdb.org/zeros/zeta/ можно скачать базу где есть около 10 миллардов корней, я же ограничился 100 миллионами.

Итак, после первого миллиона корней:

1m корней
1m корней

Каждое блуждание увеличивало значение пикселя на единицу. Так как многие пиксели оказывались на пути много раз, то в итоге я брал логарифм получившегося числа - так видно что наш процесс 'потоптался' дольше всего. Согласитесь, это несколько неожиданно. Ниже график зависимости X и Y от номера корня:

X,Y, 1m корней
X,Y, 1m корней

Видно как процесс долго топчется на месте, а потом резко рвет вверх, к другому 'облаку'. Для 10 миллионов:

10m
10m

Рост X, Y для 10 миллионов:

И, наконец, для 100 миллионов:

100m
100m

Рост X,Y для 100 миллионов:

100m
100m

На последнем графике хорошо заметно, как тормозится рост из-за уменьшения расстояния между корнями. Но совершенно удивительно то, что функция выросла там мало (на 5000) за 100 миллионов корней, то есть 25 миллионов 'оборотов' - то есть в среднем 1/5000 за оборот.

Интересно, что стоит немного поменять порядок обхода с нашего - X+Y+X-Y- на, например, такой: X+Y+Y-X-, результат сразу становится тривиальным

1m
1m

Ну почти тривиальным. Здесь интересно то, что сохраняется направление. То есть в любом случае есть интересная корреляция между расстояними между корнями, и я попытался ее поймать (расстояния нормировались к log(n)/2pi, центр поэтому лежит в точке 1,1). Сразу увидел, что есть антикорреляция между двумя соседними расстояниями:

Корреляция, 100m корней
Корреляция, 100m корней

если один шаг был длиннее обычного, следующий, скорее всего, будет короче. Ну и все - через один корень корреляции практически нет.

Собственно, это и неудивительно, потому что в момент 'рывка' между 'облаками' происходит следующее (zoom одного из 'рывков'):

zoom 1
zoom 1

Еще увеличивая, здесь уже только X:

zoom 2
zoom 2

Как видно, 'рывок' только кажется поступательным движением. На самом деле процесс колбасит взад и вперед, он часто отступает, линия движения имеет ширину в несколько пикселей и речь идет не о корреляции между соседними расстояниями между корнями, а о том, что влияет на расстояние между корнями на очень большом расстоянии между ними - сотен и тысяч значений.

Как это объяснить я это не знаю. Может быть знаете вы?