**Problem I)**

a) Find a source for 100,000 zeros of the Riemann zeta function.
(You can download from the Web, or use a built-in function like
ZetaZero[] in Mathematica. There is a way to have them in Sage,
but you have to load the appropriate database at startup. Read
the documentation for details. Or you can use lcalc in Sage to
make them from scratch.)

b) In various intervals, make histograms of the nearest neighbor spacing of the zeros, the next-nearest, next-next-nearest, etc. Go out at least twice as far as random matrix theory can make a sensible prediction. Make sure to normalize according to the average spacing.

Hint: just because you have a lot of zeros doesn't mean you need to use them all. Get a feel for how many data points you need to make a nice histogram. The answer depends on what you are trying to do. Sometimes a thousand is plenty. Other times a milion is not enough.

c) Plot the variance as a function of the $n$th spacing. That is, if $\sigma_n$ is the variance of the $n$th nearest-neighbor spacing, then plot $\sigma_n$ as a function of $n$. Is the answer surprising?

**Problem II)**

a) Implement code which generates random unitary matrices.
(Python code is in Mezzadri's paper.)

b) Generate a bunch of random unitary matrices, find the eigenvalues, and histogram the eigenangles to verify that they are uniformly distributed. (Mezzadri's paper explains why you should do this error check.)

c) Write *one line* of code which takes as input an integer $N$, generates
a random $N\times N$ unitary matrix, finds its eigenangles (which will
be between $0$ and $2\pi$), sorts them, and outputs the smallest angle.
(This one line will use your function from part a), of course.)

d) Make a prediction for what should be the average value of the output of your one line of code, as a function of $N$.

e) Test your prediction by generating data and computing the average. Make sure to generate enough data that you can be sure you have given your prediction a thorough test.

f) When your code is working properly, make some plots of the neighbor spacing, next-nearest-neighbor spacing, etc. Compare to the analogous results for the zeta-function.

**Problem III)** Look at the histograms of zeros of the derivative of the zeta-function
and zeros of the derivative of characteristic polynomials of random
matrices in this paper:

http://front.math.ucdavis.edu/1002.0372

a) Reproduce those plots for characteristic polynomials of the random matrices from your code, and convince yourself that there really is a "second bump" in the distribution.

b) Plot the zeros and zeros of the derivative of some random characteristic polynomials (on the same plot) and try to determine what causes extra zeros of the derivative to accumulate a particular distance from the unit circle.

c) Try to prove that your observation in b) does in fact explain the second bump in the distribution.

d) Look at the zeros of higher derivatives of characteristic polynomials and determine if they have an interesting distribution.

e) Investigate whether zeros of high-order derivatives of the zeta function are modeled by the analogous quantity for random characteristic polynomials.