Skip to main content
2 of 5
fixed grammar
KConrad
  • 50.6k
  • 9
  • 196
  • 277

The simplest reason functional equations have importance, for someone learning this stuff for the first time (not knowing about modular forms, automorphic representations, etc.) is that they can be used to verify the Riemann hypothesis numerically up to some height!

To explain this, let's start off with a limitation of methods of complex analysis in detecting zeros of functions. There are theorems in complex analysis which tell you how to count zeros of an analytic function f(s) inside a region by integrating f'(s)/f(s) around the boundary (this is the argument principle). So we could integrate around the boundary of a box surrounding the critical strip up to some height and see there are, say, 10 zeros of the Riemann zeta-function up to that height (yeah, there's a pole on the boundary at s = 1 which messes up the argument principle integration, but don't worry about that right now). How can we prove the 10 zeros in the critical strip up to that height are on the critical line? Complex analysis provides no theorems that assure you an analytic function has zeros on a line!

The functional equation comes to the rescue here. I'll illustrate for the Riemann zeta-function zeta(s). Its functional equation is most cleanly expressed in terms of

Z(s) = pi^{-s/2}Gamma(s/2)zeta(s)

and is the following:

Z(1-s) = Z(s).

We also need another "symmetry": Z(s*)* = Z(s), where * means complex conjugation. Where does this come from? For an entire function f(s), the function f(s*)* is also entire: in fact its local power series expansion at any point a is the one whose coefficients are complex conjugate to the coefficients of f(s) at a*. Or you could directly prove f(s*)* is complex-differentiable when f(s) is. The significance of this is that if f(s) is real-valued for some interval of real numbers then f(s*)* = f(s) on that interval, so by the rigidity of analytic functions we must have f(s*)* = f(s) everywhere when it is true on a real interval (not one point intervals, obviously). Lesson: an entire function f(s) that is real-valued on some interval of the real line satisfies the formula f(s*)* = f(s) for all complex numbers s. By the way, this also applies to meromorphic functions on C too (rigidity of meromorphic functions).

Let's now return to the zeta-function. Because zeta(s), pi^{-s/2}, and Gamma(s/2) are real-valued for real s > 1, their product Z(s) is real for s > 1, so Z(s*)* = Z(s) for all complex s. In particular, for a number s = 1/2 + it on the critical line (here t is real), we have the key calculation

Z(s)* = Z(1/2 + it)* = Z(1 - (1/2 + it))* = Z(1/2 - it)* = Z((1/2 + it)* )* = Z(1/2 + it) = Z(s),

where we used Z(s) = Z(1-s) in the second equation and Z(s*)* = Z(s) in the second to last equation.

This tells us the function Z(s) is real-valued on the critical line. The Riemann zeta-function is not real-valued on the critical line, but this modified (completed) zeta-function Z(s) is. Moreover, because Z(s) differs from zeta(s) by factors that are finite and nonzero inside the critical strip (pi^{-s/2} is a nowhere-vanishing entire function and Gamma(s/2) is meromorphic with no zeros and only has poles at s = 0, -2, -4,...), the zeros of zeta(s) and Z(s) inside the critical strip are the same thing. (In fact, nontrivial zeros of zeta(s) are exactly the same thing as all zeros of Z(s), which is one reason Z(s) is a nicer object that zeta(s): the Riemann hypothesis is a statement about all zeros of Z(s)!) So what? Well, we just showed in the key calculation above that the function Z(1/2 + it) is real when t is real, so by computing we can provably detect zeros of Z(s) on the critical line Re(s) = 1/2 by looking for sign changes of Z(1/2 + it) as t runs through the real numbers.

So here is a two-step procedure for proving the RH numerically up to height T (i.e., in the box in the critical strip from the real axis up to height T):

  1. Use complex analysis (the argument principle) to count how many zeros Z(s) has in the critical strip up to height T by integrating Z'(s)/Z(s) around a box surrounding that region. (If the poles of Z(s) at s = 0 and s = 1 bother you, recall the argument principle can account for poles or you might prefer to use s(1-s)Z(s) in place of Z(s) to be working with an entire function which satisfies the same functional equation as Z(s) and is also real-valued on the critical line.)

  2. Count sign changes for Z(1/2 + it) when 0 \leq t \leq T. There is a zero between any two sign changes, so Z(s) has at least as many zeros on the critical line as the number of sign changes that were found. (Finding a sign change is a computable thing: if a function value at a point is approximately positive or negative then it is provably so by checking the error in your computation well enough, whereas proving a function value at a point is exactly zero with a computer is basically impossible.)

If the counts in steps 1 and 2 match, then voila: all zeros of Z(s) up to height T in the critical strip are on the critical line, which confirms the Riemann hypothesis up to height T.

This method will not work if there are any multiple zeros on the critical line: the argument principle counts each zero with its multiplicity, so if for instance there is a double zero then the argument principle may tell us Z(s) has 10 zeros (with multiplicity!) up to some height while we find only 9 sign changes because one zero is a double zero so it doesn't give us a sign change. (Or if there were a triple zero we get 10 zeros with multiplicity from the argument principle but we find only 8 sign changes.) A graph may suggest that the mismatch in the numbers in the two steps is coming from a multiple zero, but it doesn't rigorously prove anything. Fortunately, this has never happened in practice with the Riemann zeta-function: the two counts always match. In fact the conjecture is that all nontrivial zeros of zeta(s) are simple zeros.

What about more general L-functions L(s)? By multiplying L(s) by suitable exponential and Gamma functions, you get a function Lambda(s) whose functional equation is

Lambda(1-s*)* = wLambda(s),

where w is a constant with absolute value 1. (For the Riemann zeta-function, Lambda(s) = Z(s) and w = 1. For Dirichlet L-functions, w is usually not equal to 1.) Let u be one of the square roots of w, so w = u^2. Then using the above functional equation, the function

(1/u)Lambda(s)

is real-valued on the critical line (s = 1/2 + it for real t), so we can detect its zeros there by looking for sign changes. The same method described above for detecting zeros of zeta(s) in the critical strip by using Z(s) and its functional equation can be applied also to L(s). This is basically the way all variants on the Riemann hypothesis are checked numerically (modulo important details of practical calculation that I don't get into), and the functional equation is an essential ingredient in justifying the method.

What is crucial here is not just the idea of sign changes, but also the expectation that the zeros are all simple (so we can find all the zeros by sign changes and the argument principle). As with the Riemann zeta-function, it is expected that the nontrivial zeros of Dirichlet L-functions are all simple. But there are examples of L-functions with a multiple zero on its critical line, thanks to ideas from the Birch and Swinnerton-Dyer conjecture. This does not wreck this approach to verifying the Riemann hypothesis for such L-functions, because such multiple zeros are supposed to happen only at one (known) point which we think we understand.

KConrad
  • 50.6k
  • 9
  • 196
  • 277