Рассказы о математике | страница 8




Наконец, запрограммируем вторую часть алгоритма - собственно вычисление Пи.

sum = Decimal(1)

sign = -1

for p in range(1,32):

sum += Decimal(sign)/Decimal((2*p+1)*(3**p))

sign = -sign

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.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134