When does the real part of Zeta vanish on the critical line?

This seems to be a quite a simple problem but I cannot make it work.
I am trying to find all values within a given range for which the real part of the Zeta function vanishes on the line: $\;z=\frac{1}{2} + i\;y$.

Given the following plot:

Plot[{ Re[ Zeta[ 1/2 + I t]]}, {t, 14, 14.6}]


I would like to get the values: $14.13...\;, 14.5....$.

-
Closely related Why do these two different zetas produce the same value?. You can use Solve[Zeta[x] == -(1/12) && Abs[x] < 20, x]. –  Artes Oct 23 '13 at 9:12
FindRoot[Re[Zeta[1/2 + I t]], {t, #}] & /@ {14, 14.5} yields {{t -> 14.1347}, {t -> 14.5179}}. By the way your question is still far from being clear. –  Artes Oct 23 '13 at 9:27
@ Artes - thank you - this is what I was after! –  martin Oct 23 '13 at 9:31
FindRoot[Re[Zeta[1/2 + I t]], {t, #}] & /@ Range[14, 25] –  Artes Oct 23 '13 at 9:37
We find numericall solutions with FindRoot nonetheless you can get rid of them using appropriate functionality. This gives you a simple approach Im[ZetaZero[#] & /@ Range[3] // N]. –  Artes Oct 23 '13 at 9:56

Solving symbolically transcendental equations one should appropriately use Solve or Reduce with adequate logical combinations of equations, inequalities, domain specifications, etc. to get desired results. There are limitations for certain types of equations involving transcendental functions, see e.g. Transcendental Roots. Here is an example which doesn't work in Mathematica 9:

Reduce[ Re[Zeta[x]] == 0 && 14 < Im[x] < 15 && Re[x] == 1/2, x]


namely it cannot find roots of the real part of Zeta, nonetheless we can find symbolic zeros of the Riemann Zeta function:

Solve[Zeta[x] == 0 && 0 < Im[x] < 25 && Re[x] == 1/2, x]

{{x -> ZetaZero[1]}, {x -> ZetaZero[2]}}


let's use Reduce in another way:

Reduce[ Zeta[ 1/2 + I t] == 0 && 0 <= t <= 250, t]

C[1] ∈ Integers && 1 <= C[1] <= 108 && t == -(1/2) I (-1 + 2 ZetaZero[C[1]])


here we provide plot of the real and imaginary part of Zeta on the critical line in the range 0 < t < 50

Plot[ Table[ h[ Zeta[ 1/2 + I t]], {h, {Re, Im}}], {t, 0, 50},
Evaluated -> True, AspectRatio -> 1/4, PlotStyle -> Thick,
Epilog -> {Red, PointSize[0.007], Point[{Im@ZetaZero[#], 0} & /@ Range[10]]},
ImageSize -> 800, PlotLegends -> Placed["Expressions", {Left, Top}]]


The function ZetaZero is very useful, one can evaluate its numerical values up to 10^7-th zero (on the other hand we know there are infinitely many Zeta zeros on the critical line), then one should work with e.g. FindRoot yielding numerical results.

ZetaZero /@ {1, 2, 10^7} // Im // N

{14.1347, 21.022, 4.99238*10^6}


If we are satisfied with numerical values only we can use FindRoot to get zeros of the real part of Zeta between 14 and 15:

FindRoot[ Re[ Zeta[ 1/2 + I t]], {t, #, 14, 15}]& /@ {14, 14.5}

{{t -> 14.1347}, {t -> 14.5179}}

Zeta[1/2 + I t] /. % // Chop

{0, 0. + 0.31227 I}


Working with FindRoot it should be useful to localize approximately starting values with ContourPlot like e.g. here.

-