zeta_real_half_terms.pl 875 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/perl
  2. # Daniel "Trizen" Șuteu
  3. # Date: 08 August 2017
  4. # https://github.com/trizen
  5. # Plotting of the terms in the series:
  6. #
  7. # zeta(1/2 + s*i) = Sum_{n>=1} 1/(n^(1/2 + s*i))
  8. #
  9. # where we have the identity:
  10. # 1/(n^(1/2 + s*i)) = (cos(log(n) * s) - i*sin(log(n) * s)) / sqrt(n)
  11. use 5.010;
  12. use strict;
  13. use warnings;
  14. use Imager;
  15. my $red = Imager::Color->new('#ff0000');
  16. my $size = 1000;
  17. my $img = Imager->new(xsize => $size,
  18. ysize => $size);
  19. my $s = 14.134725142;
  20. foreach my $n (1 .. 3000) {
  21. my ($x, $y) = (
  22. cos(log($n) * $s) / sqrt($n),
  23. -sin(log($n) * $s) / sqrt($n),
  24. );
  25. $img->setpixel(
  26. x => ($size / 2 + $size / 2 * $x),
  27. y => ($size / 2 + $size / 2 * $y),
  28. color => $red,
  29. );
  30. }
  31. $img->write(file => 'zeta_real_half.png');