Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «Рассказы ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° языках Python ΠΈ C (БИ)Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 4

Автор ЕлисССв Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π‘Π΅Ρ€Π³Π΅Π΅Π²ΠΈΡ‡

Рассказы ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° языках Python ΠΈ C (БИ) - img_6.jpeg

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ воспроизвСсти Π΅Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ объСм вычислСний.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ √12. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ€Π΅Π·ΠΎΠ½Π½Ρ‹ΠΉ вопрос β€” ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ? ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, ΡƒΠΆΠ΅ Π² Π’Π°Π²ΠΈΠ»ΠΎΠ½Π΅ Π±Ρ‹Π» извСстСн ΠΌΠ΅Ρ‚ΠΎΠ΄ вычислСния ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСйчас Ρ‚Π°ΠΊ ΠΈ называСтся «вавилонским». Π‘ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π² вычислСнии √S ΠΏΠΎ простой Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

Рассказы ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° языках Python ΠΈ C (БИ) - img_7.jpeg

Π—Π΄Π΅ΡΡŒ x0 β€” любоС ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для √12 ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ 3.

Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

from decimal import Decimal

print ("ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ:")

number = Decimal(12)

result = Decimal(3)

for p in range(1, 9):

Β Β Β Β result = (result + number / result)/Decimal(2)

Β Β Β Β difference = result**2 - number

Β Β Β Β print (p, result, difference)

sqrt12 = result

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ вСсьма интСрСсны:

Π¨Π°Π³
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
ΠŸΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ
1
3.5
0.25
2
3.464285714285714
0.00127
3
3.464101620029455
3.3890E-8
4
3.464101615137754
2.392873369E-17

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: √12 = 3,464101615137754

Как ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, сдСлав всСго 4 шага, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ √12 с достаточной Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, Π·Π°Π΄Π°Ρ‡Π° Π²ΠΏΠΎΠ»Π½Π΅ посильная Π΄Π°ΠΆΠ΅ для Ρ€ΡƒΡ‡Π½Ρ‹Ρ… расчСтов 15 Π²Π΅ΠΊΠ°.

НаконСц, Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° β€” собствСнно вычислСниС Пи.

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 Π·Π½Π°ΠΊΠΎΠ² числа Пи. Π—Π°Π΄Π°Ρ‡Π° явно Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»Π° большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‡Π΅ΠΌ сСйчас, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Π° Π² срСдниС Π²Π΅ΠΊΠ°.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ просты внСшнС, Π·Π°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π΅Ρ‰Π΅ быстрСС. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ Чудновского:

Рассказы ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π½Π° языках Python ΠΈ C (БИ) - img_8.jpeg

Для сравнСния, Ρ‚Π΅ ΠΆΠ΅ 24 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ этой Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ Π΄Π°ΡŽΡ‚ число Пи со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ:

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249.

Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ 100 ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ 1000 Π·Π½Π°ΠΊΠΎΠ² Пи, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Β«Ρ‚ΠΎΡ‡ΠΊΡƒ Π€Π΅ΠΉΠ½ΠΌΠ°Π½Π°Β»:

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420207

Π­Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Β«999999Β», находящаяся Π½Π° 762-ΠΌ Π·Π½Π°ΠΊΠ΅ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π°. Π–Π΅Π»Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дальшС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС Python:

from math import factorial

from decimal import *