Generace π v pythonu

Tento článek pro vás napsal sadru 11. 03. 2020
Kategorie: Programování

import decimal

# jak přesný by měl být výpočet (max 100)

digits = 56

 

def pi_gen():

    global x

    x = (3,1)

    i = 2

    while True:

        a = (i+0)*(i+1)*(i+2)

        b = (i+2)*(i+3)*(i+4)

        x = x[0]*a + x[1]* 4, x[1]*a

        x = x[0]*b + x[1]*–4, x[1]*b

        yield x

        i += 4

 

# pro porovnání

pi = "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679"

pi = pi[:digits+1] #aby se neporovnávala zbytečná čísla

decimal.setcontext(decimal.Context(prec=digits))

 

for x in pi_gen():

    # tohle dělení je rychlé ale neúčinné pro pi

    print("\ni:",x[0]/x[1])

    # Decimal je třída která zařizuje perfektní dělení

    # tento výpočet zpomaluje kód nejvíce

    print("t:",decimal.Decimal(x[0])/decimal.Decimal(x[1]))

    print("r:",pi,)


Zobrazeno 77x

Komentáře