Pi greco con metodo di esaustione 2
Vedi la discussione
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import math QUANTE = 10 r = 1 # Per semplificare... n = 4 # Il primo poligono è un QUADRATO l = math.sqrt(2) # Il lato del 1° poligono è ... p = n*l # n*lato pi = p/(2*r) # Perimetro/Diametro a = math.sqrt(r*r-(l/2)**2) # "Ipotenusa..." d = r-a # ... print(pi) # 1° approssimazione for passo in range(1,QUANTE): n = 2*n # Il numero di lati raddoppia l = math.sqrt((l/2)**2+d**2) # "Ipotenusa..." p = n*l # ... pi = p/(2*r) # ... a = math.sqrt(r*r-(l/2)**2) # ... d = r-a # ... print(pi) # Approssimazioni successive |
Si ottiene la sequenza 2.8284271247461903 3.0614674589207187 3.121445152258053 3.1365484905459398 3.1403311569547534 3.1412772509327733 3.1415138011443013 3.141572940367092 3.14158772527716 3.1415914215112 SymPy Con la stessa tecnica utilizzata partendo da un esagono
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import math import sympy as sp # Modulo SymPy QUANTE = 5 # SCEGLI QUANTE APPROSSIMAZIONI sp.init_printing() # Abilita pprint() r = sp.symbols('r') # Raggio della circonferenza n = sp.symbols('n') # Numero di lati del poligono l = sp.symbols('l') # Lato del poligono p = sp.symbols('p') # Perimetro del poligono pi = sp.symbols('pi') # Approssimazione di pi greco a = sp.symbols('a') # Apotema del poligono d = sp.symbols('d') # Differenza tra il raggio e l'apotema n = 4 # Il primo poligono è un quadrato l = sp.sqrt(2)*r # Il lato è uguale a ... p = n*l # n*lato pi = p/(2*r) # Perimetro/Diametro a = sp.sqrt(r*r-(l/2)**2) # "Ipotenusa..." d = r-a # ... PIGRECO = sp.simplify(pi.subs(r, 1)) # Sostituisce e semplifica sp.pprint(PIGRECO) # Stampa la formula in forma comprensibile print(sp.latex(PIGRECO)) # in LaTeX print(PIGRECO.evalf(20)) # 20 cifre dopo la virgola for passo in range(1,QUANTE): n = 2*n # Il numero di lati raddoppia l = sp.sqrt((l/2)**2+d**2) # "Ipotenusa..." p = n*l # ... pi = p/(2*r) # ... a = sp.sqrt(r*r-(l/2)**2) # ... d = r-a # ... PIGRECO = sp.simplify(pi.subs(r, 1)) sp.pprint(PIGRECO) print(sp.latex(PIGRECO)) print(PIGRECO.evalf(20)) |
Si ottiene
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
2⋅√2 2 \sqrt{2} 2.8284271247461900976 ________ 4⋅╲╱ 2 - √2 4 \sqrt{2 - \sqrt{2}} 3.0614674589207181738 ________________ ╱ ________ 8⋅╲╱ 2 - ╲╱ √2 + 2 8 \sqrt{2 - \sqrt{\sqrt{2} + 2}} 3.1214451522580522856 _________________________ ╱ ________________ ╱ ╱ ________ 16⋅╲╱ 2 - ╲╱ ╲╱ √2 + 2 + 2 16 \sqrt{2 - \sqrt{\sqrt{\sqrt{2} + 2} + 2}} 3.1365484905459392638 ___________________________________ ╱ _________________________ ╱ ╱ ________________ ╱ ╱ ╱ ________ 32⋅╲╱ 2 - ╲╱ ╲╱ ╲╱ √2 + 2 + 2 + 2 32 \sqrt{2 - \sqrt{\sqrt{\sqrt{\sqrt{2} + 2} + 2} + 2}} 3.1403311569547529123 |
Utilizzando le codifiche LaTeX (con qualche commutazione) …