読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

(58) Riemannゼータ函数の零点

Riemannゼータ函数の絶対値の2乗の逆数をプロットしてみましょう。

/* 9.3.8m */
plot3d(1/cabs(zeta(x +%i*y))^2, [x, 0, 1], [y, 10, 24], [grid, 50, 50], [z, 0, 40])$


x=0.5上のy=14, y=21付近に発散していく場所があることが見えます。

実部を0.5に固定して、ゼータ函数の絶対値をプロットしてみましょう。

/* 9.3.9m */
plot2d(cabs(zeta(1/2 + %i*x)), [x, 0, 30])$

Newton法を使って、y=15付近の零点の値を調べてみましょう。

/* 9.3.10m */
eps : 1.0e-8$
y : 15.0$
for j : 1 thru 5 do (
  y : y - eps*zeta(rectform(0.5 + %i*y))/(zeta(rectform(0.5+%i*(y + eps))) - zeta(rectform(0.5 + %i*y))),
  print(rectform(y))
  )$

使用した機能

上の値に0.5を足したものが零点の数値です。