Dokopałem się niedawno całkiem niechcący do następującej równości:
$$ \prod_{n=1}^{\infty} \frac{{p_n}^2}{{p_n}^2-1} = \frac{\pi^2}{6} $$
, przy czym \(p_n\) oznacza tu n-tą z kolei liczbę pierwszą, czyli 2, 3, 5, 7, 11 i tak dalej aż do nieskończoności.
Dla niezorientowanych, powyższe należy rozumieć tak: bierzemy dwójkę, podnosimy ją do kwadratu, wynikową czwórkę dzielimy przez samą siebie ale zmniejszoną o jeden, czyli przez 3. W efekcie dostajemy 4/3 czyli mniej więcej 1.33....
Potem bierzemy trójkę (bo to kolejna, po dwójce, liczba pierwsza) i robimy to samo czyli podnosimy ją do kwadratu a następnie to co wyjdzie dzielimy przez liczbę o jeden mniejszą. Czyli: trzy razy trzy to dziewięć, 9/8 = 1.125.
I teraz - uwaga: mnożymy przez siebie obydwa wyniki, czyli 4/3 razy 9/8 i dostajemy 1.5.
Teraz bierzemy piątkę (kolejna pierwsza po trójce), podnosimy do kwadratu i dzielimy przez o jeden mniejszą: 25/24. I mnożymy przez dotychczasowy wynik "główny" czyli 1.5: 25/24*1.5 = 1.5625
Potem bierzemy siódemkę...
Jedenastkę...
Trzynastkę...
... i tak do nieskończoności. To, co nam wyjdzie na końcu, to jedna szósta liczby pi podniesionej do kwadratu.
Nie chciało mi się za bardzo wierzyć, bo przecież liczby pierwsze są rozmieszczone na osi liczbowej dość losowo (chociaż ich gęstość da się zgrubnie wyestymować za pomocą PNT, ale - właśnie - zgrubnie). A pi to pi, konkretna wartość.
Szybciutko napisałem sobie prostą pętelkę sprawdzającą czy to faktycznie działa. Oczywiście nie do nieskończoności, bo wiadomo, ale pierwszych sto tysięcy kroków dało całkiem solidne przybliżenie liczby pi:
from sympy import nextprime n = 2 p = 1 iterations = 100_000 for i in range(iterations): p *= (n**2/(n**2-1)) n = nextprime(n) print((p*6)**0.5)
Wynik: 3.141592573144159
czyli błąd pojawia się na siódmym miejscu po przecinku.
Zwiększenie liczby iteracji do miliona daje 3.141592647794859
czyli błąd na ósmym miejscu. Widać, że za każdą dodatkową cyfrę trzeba "zapłacić" kolejnym rzędem wielkości, więc szereg nie jest jakoś wybitnie szybkozbieżny... ale jednak zbieżny do pi.
Czemu tak? Pojęcia nie mam.
Jak chwilę poszukać, to można znaleźć więcej dziwactw:
[1] product from i=2 to infinity i^2/(i^2-1) = 2
[2] product from i=2 to infinity (2i-1)^2/((2i-1)^2-1) = 4/pi
[3] product from i=2 to infinity (2i)^2/((2i)^2-1) = 3/8 pi
Ciekawostka: w [1] jest iloczyn dla wszystkich naturalnych i>1, w [2] iloczyn dla liczb nieparzystych, a w [3] dla parzystych. Czyli [2] i [3] w sumie…, tzn. w iloczynie powinny dać to co w [1], a nie dają: 3/8 pi * 4/pi = 3/2. W [1] wynik to 2. Dlaczego?
Proste arytmetyczne sumowanie nieskończonych ciągów (czy szeregów) jest zawsze ryzykowne. Nie chce mi się teraz szukać źródła, ale idąc tą drogą da się „udowodnić”, że nieskończona suma 1-1+1-1+1-1… daje w wyniku -1/12 🙂
No przeca pierwszy składnik iloczynu [1] to 2*2/(2*2 – 1), natomiast pierwszy składnik iloczynu [3] to (4*4)/(4*4 – 1), to jest drugi składnik iloczynu [1]. Jeśli pomnożysz 3/2 przez ten składnik, czyli 4/3 dostaniesz dokładnie 2. Wszystko się zgadza.
Poprzednie „dlaczego” było retoryczne. Chodziło mi bardziej o zwrócenie uwagi, że podany przez ciebie wzór dla innych danych daje równie ciekawe wyniki. Zgadzam się jednak, że liczby pierwsze są bardzo szczególne w tym względzie.
Dlatego pogrzebałem trochę w głowie i w literaturze i po połączeniu paru faktów wyszło coś takiego:
https://www.szybkiplik.pl/52zsr9ZaH7
(link aktywny tylko przez 7 dni)