zeros of the Riemann zeta function

112 views
Skip to first unread message

Anne Driver

unread,
Jun 1, 2010, 11:13:58 AM6/1/10
to sage-s...@googlegroups.com
Hello,

I am new to this list, and relatively new to Sage. I'm puzzled by the logic of one part of Sage though.

Although I don't have access to Mathematica at the minute on this computer, I know if I compute the first zero, I get something like

In[1] = ZetaZero[1] //N (to get a numerical value)
Out[1] = 1/2 + I*14.134...

Trying this in Sage, I get:

sage: lcalc.zeros(1)
[14.1347251]


Why does Sage not do the sensible thing like Mathematica and return the complex number 0.5 + I 14.1347251 ? It would seem much more logical.

Of course, it is not proven that the real part is 1/2, so how would the case be handled if a root was not found to have a real part of 1/2 ?

Anne







Robert Bradshaw

unread,
Jun 1, 2010, 1:58:20 PM6/1/10
to sage-s...@googlegroups.com

I believe both algorithms assume the Riemann hypothesis in computing
them (otherwise, for example, it would be ambiguous to talk about the
n-th zero anyways). I would guess the reason that lcalc returns the
imaginary part only is that otherwise the first thing one would do to
actually do anything interesting with this data would be to take the
imaginary part, so this just saves the effort and overhead.

- Robert

William Stein

unread,
Jun 1, 2010, 2:05:34 PM6/1/10
to sage-s...@googlegroups.com, Michael Rubinstein
On Tue, Jun 1, 2010 at 10:58 AM, Robert Bradshaw
<robe...@math.washington.edu> wrote:
> On Jun 1, 2010, at 8:13 AM, Anne Driver wrote:
>
>> Hello,
>>
>> I am new to this list, and relatively new to Sage. I'm puzzled by the
>> logic of one part of Sage though.
>>
>> Although I don't have access to Mathematica at the minute on this
>> computer, I know if I compute the first zero, I get something like
>>
>> In[1] = ZetaZero[1] //N (to get a numerical value)
>> Out[1] = 1/2 + I*14.134...
>>
>> Trying this in Sage, I get:
>>
>> sage: lcalc.zeros(1)
>> [14.1347251]
>>
>>
>> Why does Sage not do the sensible thing like Mathematica and return the
>> complex number 0.5 + I 14.1347251 ? It would seem much more logical.
>>
>> Of course, it is not proven that the real part is 1/2, so how would the
>> case be handled if a root was not found to have a real part of 1/2 ?
>
> I believe both algorithms assume the Riemann hypothesis in computing them
> (otherwise, for example, it would be ambiguous to talk about the n-th zero
> anyways).

Often such computations actually prove the Riemann hypothesis up to a
given height
(see, e.g., http://numbers.computation.free.fr/Constants/Miscellaneous/zetazeros1e13-1e24.pdf)

I've cc'd Mike Rubinstein, so he can respond if he wants, since I'm
not sure lcalc is actually doing
this or not.

-- William

> I would guess the reason that lcalc returns the imaginary part
> only is that otherwise the first thing one would do to actually do anything
> interesting with this data would be to take the imaginary part, so this just
> saves the effort and overhead.
>
> - Robert
>

> --
> To post to this group, send email to sage-s...@googlegroups.com
> To unsubscribe from this group, send email to
> sage-support...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/sage-support
> URL: http://www.sagemath.org
>

--
William Stein
Professor of Mathematics
University of Washington
http://wstein.org

Robert Bradshaw

unread,
Jun 1, 2010, 2:21:21 PM6/1/10
to sage-s...@googlegroups.com, Michael Rubinstein

> I've cc'd Mike Rubinstein, so he can respond if he wants, since I'm
> not sure lcalc is actually doing
> this or not.


IIRC, the broad idea is to compute sign changes and then perform a
contour integral to prove that you have located all the zeros. If no,
refine the grid and try again. Of course this is a huge
oversimplification, but if there are zeros not on the critical line
than this would simply fail to terminate, and otherwise it would prove
the hypothesis.

- Robert

John Cremona

unread,
Jun 1, 2010, 3:15:56 PM6/1/10
to sage-support
Did you read the documentation of the function? It makes it quite
clear:

Definition: lcalc.zeros(self, n, L='')
Docstring:
Return the imaginary parts of the first n nontrivial zeros of
the
L-function in the upper half plane, as 32-bit reals.

INPUT:

* ``n`` - integer

* ``L`` - defines L-function (default: Riemann zeta function)

This function also checks the Riemann Hypothesis and makes sure
no
zeros are missed. This means it looks for several dozen zeros
to
make sure none have been missed before outputting any zeros at
all,
so takes longer than ``self.zeros_of_zeta_in_interval(...)``.

You could always define your own function to return the complete zero:

sage: [1/2+I*y for y in lcalc.zeros(10)]
[0.500000000 + 14.1347251*I, 0.500000000 + 21.0220396*I, 0.500000000 +
25.0108576*I, 0.500000000 + 30.4248761*I, 0.500000000 + 32.9350616*I,
0.500000000 + 37.5861782*I, 0.500000000 + 40.9187190*I, 0.500000000 +
43.3270733*I, 0.500000000 + 48.0051509*I, 0.500000000 + 49.7738325*I]

!

Anne Driver

unread,
Jun 8, 2010, 7:33:38 AM6/8/10
to sage-s...@googlegroups.com
Yes, I did read the documentation. It says it returns the imaginary part. But there is no I - just a real number. As such I believe at the very least the documentation should say it returns the imaginary part as a real number. Better still is to return the imaginary part with an I in front of it.

However, I do not believe either are particularly good choices. I believe it is better to return the real and imaginary parts, as both

Mathematica,
http://reference.wolfram.com/mathematica/ref/ZetaZero.html

and mpmath
http://mpmath.googlecode.com/svn/tags/0.15/doc/build/functions/zeta.html

do. Both Mathematica and mpmath seem to me to pick more logical formats for returning the number. Would you not agree?

Anne

Alex Ghitza

unread,
Jun 8, 2010, 7:40:59 AM6/8/10
to Anne Driver, sage-s...@googlegroups.com
On Tue, 8 Jun 2010 12:33:38 +0100, Anne Driver <annedr...@gmail.com> wrote:
> Yes, I did read the documentation. It says it returns the imaginary part.
> But there is no I - just a real number. As such I believe at the *very least
> * the documentation should say it returns the imaginary part as a real

> number. Better still is to return the imaginary part with an I in front of
> it.

I don't have strong opinions about the matter, but I'd like to point out
that the imaginary part of a complex number *is* just a real number
(if z = x + i*y, the imaginary part is y, without the i). So the
documentation is correct about this.


Best,
Alex

--
Alex Ghitza -- http://aghitza.org/
Lecturer in Mathematics -- The University of Melbourne -- Australia

Anne Driver

unread,
Jun 8, 2010, 8:41:37 AM6/8/10
to sage-s...@googlegroups.com
Yes, I stand corrected on that matter.

I still think it is an illogical choice though, to return just the imaginary part. But I can live with it.

Anne
Reply all
Reply to author
Forward
0 new messages