print(p, sqrt12 * sum)
print("Result:", sqrt12 * sum)
Результаты работы программы:
Шаг Значение
1 3.079201435678004077382126829
2 3.156181471569954179316680000
3 3.137852891595680345522738769
4 3.142604745663084672802649458
5 3.141308785462883492635401088
6 3.141674312698837671656932680
7 3.141568715941784242161823554
8 3.141599773811505839072149767
9 3.141590510938080099642754230
10 3.141593304503081513121460820
11 3.141592454287646300323593597
12 3.141592715020379765581606212
13 3.141592634547313881242713430
14 3.141592659521713638451335328
15 3.141592651733997585128216671
16 3.141592654172575339199092210
17 3.141592653406165187919674184
18 3.141592653647826046431202391
19 3.141592653571403381773710565
20 3.141592653595634958372427485
21 3.141592653587933449530974820
22 3.141592653590386522717511595
23 3.141592653589603627019680710
24 3.141592653589853940610143646
Уже на 24-м шаге мы получаем искомые 11 знаков числа Пи. Задача явно требовала больше времени чем сейчас, но вполне могла быть решена в средние века.
Современные формулы не столь просты внешне, зато работают еще быстрее. Для примера можно привести формулу Чудновского:
Для сравнения, те же 24 итерации по этой формуле дают число Пи со следующей точностью:
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249.
Если сделать 100 итераций и вычислить 1000 знаков Пи, то можно увидеть так называемую «точку Фейнмана»:
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420207
Это последовательность «999999», находящаяся на 762-м знаке от начала. Желающие могут поэкспериментировать дальше самостоятельно с помощью программы на языке Python:
from math import factorial
from decimal import *
def chudnovsky(n):
pi = Decimal(0)
k = 0
while k n:
pi += (Decimal(-1)**k) * (Decimal(factorial(6 * k)) / ((factorial(k)**3) * (factorial(3*k))) * (13591409 + 545140134 * k) / (640320**(3 * k)))
k += 1
print("Шаг: {} из {}".format(k, n))
pi = pi * Decimal(10005).sqrt / 4270934400
pi = pi**(-1)
return pi
# Требуемая точность (число знаков)
N = 1000
getcontext.prec = N
val = chudnovsky(N / 14)
print(val)