Riemann Zeta function visualizations with Python
While playing with mpmpath and it’s Riemann Zeta function evaluator, I came upon those interesting animated plottings using Matplotlib (the source code is in the end of the post).
Riemann zeta function is an analytic function and is defined over the complex plane with one complex variable denoted as ““. Riemann zeta is very important to mathematics due it’s deep relation with primes; the zeta function is given by:
for .
So, let where and .
The first plot uses the triplet coordinates to plot a 3D space where each component is given by:
- (or , previously defined);
- (or , previously defined);
- (or , previously defined);
- The time component used in the animation is called and it’s given by or simply .
To plot the animation I’ve used the follow intervals:
- For : from , this were calculated at every 0.01 step – shown in the plot at top right;
- For : from , calculated at every 0.1 step – shown as the axis.
This plot were done using a fixed interval (no auto scale) for the coordinates. Where () is when the non-trivial zeroes of Riemann Zeta function lies.
Now see the same plot but this time using auto scale (automatically resized coordinates):
Note the auto scaling.
See now from another plotting using a 2D space where each component is given by:
- (or , previously defined);
- (blue) and (green);
- The time component used in the animation is called and it’s given by or simply .
To plot the animation I’ve used the follow intervals:
- For : from , this were calculated at every 0.01 step – shown in title of the plot at top;
- For : from , calculated at every 0.1 step – shown as the axis.
This plot were done using a fixed interval (no auto scale) for the coordinates. Where () is when the non-trivial zeroes of Riemann Zeta function lies. The first 10 non-trivial zeroes from Riemann Zeta function is shown as a red dot, when the two series, the and cross each other on the red dot at the critical line () is where lies the zeroes of the Zeta Function, note how the real and imaginary part turns away from each other as the increases.
Now see the same plot but this time using auto scale (automatically resized coordinate):
If you are interested in more visualizations of Riemann Zeta function, you’ll like the well-done paper from J. Arias-de-Reyna called “X-Ray of Riemann zeta-function“.
I always liked the way visualization affects the understanding of math functions. Anscombe’s quartet is a clear example of how important visualization is.
The source-code used to create the plot are available here:
I hope you liked the post ! To make the plots and videos I’ve used matplotlib, mpmath and MEncoder.
– Christian S. Perone
Great stuff. I enjoyed it very much. Thank you.
PS. Since you have the programming and the computational capabilities, how would you like to do an extensive search for possible zeat zeros off the crotocal line, but at each imaginary value of the non trivial zeros on the critical line (already computed)? This will help prove or disprove the unresolved issue of the existence of zeta zeros that have the same imginary part as those on the critical line.
Thanks. So helpfull
This is wonderful!
The quest for ‘what’s rrrreally goin’ on.’ Great stuff. Thank you for this.
Awesome post. Inspired by it, I used python code similar to yours to demonstrate how the Riemann-Siegel formula is a great approximation for the Riemann zeta function near the critical line but not away from it. Hence it is a good way for approximating the non-trivial zeros.
Check out the github…
https://github.com/danerf/Riemann-zeta
Cool Daner, thanks for the link !
Very good.
You are my hero
May I add my thanks too. Brilliant stuff!
My implementation is at https://github.com/matthewshawnkehoe/Riemann-Zeta-Functions. It is fairly straightforward to implement Riemann-Siegel from scratch. Open research in this topic is now focused on improving the Odlyzko–Schonhage algorithm (which uses the FFT to find zeros on the critical line).