Exploring the Riemann spectrum

Share

Part of the philosophy I hope to promote at PeakMath is to play! Play around with the mathematical entities you encounter! Try silly things, make fun observations, and don't worry too much about whether your findings are "important" or not.

In an interesting philosophical paper, Alexandra van Quynh and Luke Wolcott observes that a deep understanding of a mathematical object may involve thinking of the object "as a good friend, with personality". If you've watched the movie The Man Who Knew Infinity, you may remember it was said of Ramanujan that "every positive integer is his personal friend".

So when it comes to L-functions and all the other wondrous creatures of the mathematical world, I will post various open and exploratory questions, sometimes with helpful Sage code to get started, as an encouragement to play around with and get to know these friendly beasts. Being friends is a beautiful goal in itself! And as a side effect, the intimate personal understanding arising from a spirit of play may in the long run lead to deeper insights, including things that others will think of as "important".

To begin with, let's have a look at the prime waves from Episode 1 of the RH Saga. Here is the video, in which the part about the prime waves begin around 12:50.

Here is the code used for the prime waves:

Like in the video you can increase the number $n$ yourself, to include a larger number of zeroes in the computation, and hence get better waves.

The Sage command zeta_zeros(), if I read the documentation correctly, gives you the imaginary parts of the first 2,001,052 zeros of the Riemann zeta function, accurate to within $4 \cdot 10^{-9}$.

You can play around with these zeroes at will, trying out different things. Here are a few suggestions.

Spectral sums

Take a function $f(\rho)$ of a complex variable $\rho$. Now we can consider the sum

\[ \sum_{\rho} f(\rho) \]

where the sum is taken over all the nontrivial zeroes of the Riemann zeta function. For the sum to converge, the function $f$ must go to zero reasonably fast as $\vert \rho \vert \to \infty$.

Let's call such an expression a spectral sum. Once a function $f$ has been chosen, you can compute the corresponding spectral sum for any L-function, and you can think of such a computation as measuring some physical property of the L-function, like its "energy", or "momentum". But today, let's focus on the Riemann zeta function.

One interesting choice of function is

\[ f(\rho) = \frac{1}{\vert \rho \vert^2} \]

which goes to zero as required. This may seem highly surprising, but one equivalent form of the Riemann Hypothesis is in fact an exact formula for this spectral sum! The sum should be exactly

\[ 2 + \gamma - \log(4 \pi) \]

where $\gamma$ is the Euler-Mascheroni constant and $\log$ is the natural logarithm. If you can prove this, you've earned a million dollars. Now, just for fun, explore what happens as you compute the sum, increasing $n$ gradually (but not, I think, far above 2 million!).

On the Fungrim website created by Fredrik Johansson, you can find the definition of the so-called Keiper-Li coefficients. Use the second of the two representations there to get these numbers as a spectral sum. Write some code to compute the Keiper-Li coefficients! You may recall from Episode 6 on YouTube that the Riemann Hypothesis is equivalent to all of the Keiper-Li coefficients being positive. Perhaps unlike many other equivalent formulations of RH (which are generally viewed more as curiosities than potential avenues to actual progress), this formulation has been subject to a considerable amount of work by many serious experts. Just to give one example, here is a paper by Jeffrey Lagarias.

As an exercise, see if you can compute the first 30 or so Keiper-Li coefficients. Compare your values to the table at Fungrim. How many digits can you compute correctly, with the large but still limited amount of data we have from Sage?

Spacings

Perhaps you watched Sarnak's recent talk (here's a direct link to the relevant part starting from around 46:18), or perhaps you've read about the mysterious connections between L-functions and random matrix theory, beginning with the remarkable chance encounter between Freeman Dyson and Hugh Montgomery in 1972. The starting point of this story is that the average (or expected) gap between two zeroes around height $T$ in the critical strip is known to be $a(T) = 2 \pi / \log(T/ 2\pi)$, and hence, if we write $t_1$, $t_2$ etc. for the imaginary parts of the zeroes, the numbers

\[ \delta_n = (t_{n+1}-t_n ) / a(t_n) \]

represent the normalised (i.e. rescaled to mean value $1$) gaps between subsequent zeroes. One can plot a histogram of how these gaps are distributed, and this is the famous graph shown by Sarnak in his talk, and in many other books and lectures on the subject.

The code below plots this histogram, together with the Grand Unitary Ensemble prediction from random matrix theory, which says in terms of the normalised spacing $s$, that the distribution curve should be

\[ p(s) = \frac{32 s^2}{\pi^2} \exp(−4s²/ \pi) \]

Now you can compute these normalised spacings with Sage, and plot the histogram. Note that this code uses the normalization above, and then an extra step dividing each spacing by the mean value of the actual data sampled, so that the new mean value is exactly 1. It is my belief that this extra step would not be relevant if we sampled zeroes from high up in the spectrum.

Anyway, try to gradually increase the number of zeroes and see what happens! The GUE prediction is overlaid in red.

The classical reference for these kinds of computations is Andrew Odlyzko's 1987 paper, where you will also find a discussion of other kinds of statistical questions one can ask about the zeroes.

Computing the spectrum from scratch

I recently received some very nice emails from a student who found his own method for computing (approximations to) the zeroes at the start of the spectrum. With his permission, I hope to share this method here eventually. But what about you - how would you go about actually computing the the first few zeroes (14.13, 21.02, 25.01, ...) of the Riemann zeta function?