import math
n=6 # Esagono
# Raggio = 1 (Apotema circoscritto)
Li = 1 # Poligono inscritto
Ai = math.sqrt(1-(Li/2)**2) #
Pi = n*Li #
PIi = Pi/2 #
Lc = Li/Ai # Poligono circoscritto
Pc = n*Lc #
PIc = Pc/2 #
Delta = 1-Ai # Apotema circ. - apotema inscr.
print("%5d - %18.16f %18.16f" %(n, PIi, PIc))
for passo in range(1,15):
n=2*n
Li = math.sqrt((Li/2)**2+Delta**2)
Ai = math.sqrt(1-(Li/2)**2)
Pi = n*Li
PIi = Pi/2
Lc = Li/Ai
Pc = n*Lc
PIc = Pc/2
Delta=1-Ai
print("%5d - %18.16f %18.16f" %(n, PIi, PIc))
Si ottiene
6 - 3.0000000000000000 3.4641016151377553
12 - 3.1058285412302489 3.2153903091734723
24 - 3.1326286132812378 3.1596599420975000
48 - 3.1393502030468667 3.1460862151314348
96 - 3.1410319508905098 3.1427145996453683
192 - 3.1414524722854624 3.1418730499798242
384 - 3.1415576079118579 3.1416627470568486
768 - 3.1415838921483186 3.1416101766046900
1536 - 3.1415904632280505 3.1415970343215260
3072 - 3.1415921059992717 3.1415937487713523
6144 - 3.1415925166921577 3.1415929273850973
12288 - 3.1415926193653840 3.1415927220386139
24576 - 3.1415926450336911 3.1415926707019981
49152 - 3.1415926514507682 3.1415926578678448
98304 - 3.1415926530550373 3.1415926546593065
Per numero di lati fino a 96

import math
import matplotlib.pyplot as plt
N = [6*2**i for i in range(0,5)]
PII = 5*[0]
PIC = 5*[0]
n = N[0]
Li = 1 # Poligono inscritto
Ai = math.sqrt(1-(Li/2)**2) #
Pi = n*Li #
PIi = Pi/2 #
Lc = Li/Ai # Poligono circoscritto
Pc = n*Lc #
PIc = Pc/2 #
Delta = 1-Ai # Apotema circ. - apotema inscr.
PII[0]=PIi
PIC[0]=PIc
print("%5d - %18.16f %18.16f" %(n,PIi, PIc))
for passo in range(1,5):
n=N[passo]
Li = math.sqrt((Li/2)**2+Delta**2)
Ai = math.sqrt(1-(Li/2)**2)
Pi = n*Li
PIi = Pi/2
Lc = Li/Ai
Pc = n*Lc
PIc = Pc/2
Delta = 1-Ai
PII[passo]=PIi
PIC[passo]=PIc
print("%5d - %18.16f %18.16f" %(n,PIi, PIc))
plt.grid(which="major")
plt.plot(PII)
plt.plot(PIC)
plt.title("Pi greco - Metodo di Archimede")
plt.xticks(range(0,5), N)
plt.show()