for s a complex number. This function is analytic for real part of s greater than 1 and is related to the prime numbers by the Euler Product Formula
again defined for real part of s greater than
one. This function extends to points with real part
s less than or equal to one by the formula (among
The contour here is meant to indicate a path which begins at positive infinity, descends parallel to and just above the real axis, circles the origin once in the counterclockwise direction, and then returns to positive infinity parallel to and just below the real axis. This function is analytic at all points of the complex plane except the point s = 1 where it has a simple pole. This last function is the Riemann Zeta Function (the zeta function).
The zeta function has no zeros in the region where the real part of s is greater than or equal to one. In the region with real part of s less than or equal to zero the zeta function has zeros at the negative even integers; these are known as the trivial zeros. All remaining zeros lie in the strip where the real part of s is strictly between 0 and 1 (the critical strip). It is known that there are infinitely many zeros on the line 1/2 + it as t ranges over the real numbers. This line in the complex plane is known as the critical line. The Riemann Hypothesis (RH) is that all non-trivial zeros of the zeta function lie on the critical line. Let's say that again:
all non-trivial zeros of the zeta function lie on the line 1/2 + it as t ranges over the real numbers.
The functional equation of the zeta function is
from which values of the zeta function at s can be computed from its values at 1-s. Using this equation one sees immediately that the zeta function is zero at the negative even integers. Multiplying this equation through by s(s-1)/2 and applying standard factorial identities shows that
is an entire function which has as zeros the non-trivial zeros of the zeta function, and is invariant under the transformation s -> 1-s. This invariance and the fact that the function is real for real s implies that it is also real on the critical line s = 1/2 + it, t real. On this line s = 1/2 + it,
The first term in this last equation is always negative. The second term, denoted Z(t), is real and has the same zeros as the zeta function at 1/2 + it, t real. Thus locating zeros on the critical line of the (complex) zeta function reduces to locating zeros on the real line of the real function Z(t). The Z(t) term in the previous equation may be expressed
For computational purposes, the expansion
is used. This function converges very rapidly for t at all large.
The function Z(t) is typically the object of study for locating zeros of the zeta function on the critical line and verifying the Riemann Hypothesis.
The applet to the left is a real time plot of t vs. Z(t) for t > 100. With this little tool you can view the behaviour of Z(t) and spot its zeros visually, not to mention entertain yourself by watching the seemingly random oscillations of the curve.
The applet should work fine for t up to 10,000,000 or so, though it is much smoother and faster for smaller (~100,000) values of t . Even for t around 1,000,000,000 the applet does the right thing, though the animation reduces to a sequence of snapshots. A more serious consideration is that the numerical accuracy is questionable at these large t values.
Notice that as you try larger values of t, say t = 1,000,000 or so, the density of the zeros increases. The tic marks on the t-axis are called Gram Points, which are by definition points at which the theta function takes on integral multiples of pi. These also increase in density with increasing t, and for the most part, the zeros of Z(t) alternate with the Gram points. This alternation of zeros with Gram points is key to verifying the Riemann Hypothesis.
The algorithm used to compute Z(t) is called the Riemann-Siegel formula, after B. Riemann who first discovered though did not publish it, and C. Siegel (1896-1981) who finally deciphered Riemann's notes and published the result in the 1930's. This algorithm is quite efficient relative to other known methods, requiring order t1/2 operations to compute each value of Z(t). Prior to Siegel's rediscovery, the most popular method was Euler-Maclaurin Summation which requires order t operations per evaluation of Z(t).
One interesting fact about the Z(t) curve is that the absence of a zero between consecutive local extrema would signal a counter-example to the Riemann Hypothesis (RH). Occasionally the curve very nearly fails to cross the t-axis before changing direction, offering a tantalizing suggestion that perhaps RH is false. Take a look at t = 17143.8 for example. This near failure of RH is known as Lehmer's Phenomenon.
I've tried to write the Java code using only JDK 1.0 classes and methods so that it works on most browsers, in particular the older ones. The decimal formatting is still kind of iffy, and there is some odd behaviour when you zoom or change t values on the fly, but otherwise it works ok. If the applet does not work for you, please drop me a note and tell me what browser you're using and what kind of errors you're getting. The applet seems to work much more smoothly in the Java Appletviewer than within a browser. If you have this tool, try viewing this web page in it using for eg:
(in Unix/Linux anyway).
If the results from these two steps match, then RH holds up to height T. Before going too much into detail, you may want to have a look at the Z(t) Plotter Java applet which will help with the explanations to follow.
The approach to counting zeros of Z(t) is that used by J.Gram (1850-1916) based on a very simple observation. Recall that
Gram observed that the real part of the zeta function on the critical line tends to be positive, while the imaginary part alternates more regularly between positive and negative values. That means that the sign of Z(t) must be opposite to that of the sine function most of the time, so one would expect the zeros of Z(t) to alternate with zeros of the sine term, i.e. when theta takes on an integer multiples of pi. This turns out to hold most of the time and is known as Gram's Law. (a law which is violated infinitely often though!)
The values t where theta takes on integer multiples of pi are called Gram points, and Gram's Law is the statement that zeros of Z(t) alternate with the Gram points. Define the nth Gram point gn to be the (unique) point such that
Then Gram's Law is
Gram points which satisfy Gram's Law are called good, while those that don't are called bad (not surprisingly.) A Gram block is an interval [gn, gn+k) such that gn and gn+k are good Gram points and all Gram points inside the interval are bad. The exercise of counting zeros then reduces to that of counting all Gram points where Gram's law is satisfied, and adding to that the count of zeros inside each Gram block. With this process you don't have to locate zeros exactly, you just have to compute Z(t) accurately enough to show that it changes sign.
where N(T) is the number of roots in the critical strip between zero and T. Turing showed that
This is useful because if gm is a Gram point where Gram's law is satisfied, it turns out that S(gm) must be an even integer. This integral forces |S(gm)| < 2 under the right conditions, from which |S(gm)| = 0 and
Showing that |S(gm)| < 2 is not a lot of work, though the argument used is a bit technical. An interesting property of the argument is that it relies solely on values of Z(t) for t real. In other words, under the right circumstances, counting the number of zeros of the zeta function in the critical strip to height T depends only on its values on the critical line.
To date the methods above have been used to verify RH to large heights of the critical strip. Van de Lune et al. have shown that the first one and half billion non-trivial zeros lie on the critical line, while A. Odlyzko has demonstrated the validity of RH in large regions of the critical strip near the 1020th zero. As part of my Master's project, I used these methods on my PC to show that the first twelve million or so zeros of the zeta function lie on the critical line (big surprise!)
Here are a few other applets related to the zeta function and the prime number theorem: