Pi greco con serie di Leibniz
La serie
1 2 3 4 5 6 7 8 9 10 |
PASSI=10 def a(n): return ((-1)**n)/(2*n+1) Sn=0 for n in range(PASSI): an =((-1)**n)/(2*n+1) Sn+=an pin=4*Sn print("%i %17.14f %16.14f %16.14f"%(n, an, Sn, pin)) |
Output (formattato)
1 2 3 4 5 6 7 8 9 10 |
0 1.00000000000000 1.00000000000000 4.00000000000000 1 -0.33333333333333 0.66666666666667 2.66666666666667 2 0.20000000000000 0.86666666666667 3.46666666666667 3 -0.14285714285714 0.72380952380952 2.89523809523810 4 0.11111111111111 0.83492063492064 3.33968253968254 5 -0.09090909090909 0.74401154401154 2.97604617604618 6 0.07692307692308 0.82093462093462 3.28373848373848 7 -0.06666666666667 0.75426795426795 3.01707181707182 8 0.05882352941176 0.81309148367972 3.25236593471888 9 -0.05263157894737 0.76045990473235 3.04183961892940 |
Frazioni
1 2 3 4 5 6 7 8 9 10 11 12 |
import fractions PASSI=10 def a(n): return fractions.Fraction((-1)**n, 2*n+1) Sn=0 for n in range(PASSI): an =a(n) Sn+=an pin=4*Sn print("%i %6s %18s %18s %17.14f" %(n, str(an), str(Sn), str(pin), float(pin))) |
Output (formattato)
1 2 3 4 5 6 7 8 9 10 |
0 1 1 4 4.00000000000000 1 -1/3 2/3 8/3 2.66666666666667 2 1/5 13/15 52/15 3.46666666666667 3 -1/7 76/105 304/105 2.89523809523810 4 1/9 263/315 1052/315 3.33968253968254 5 -1/11 2578/3465 10312/3465 2.97604617604618 6 1/13 36979/45045 147916/45045 3.28373848373848 7 -1/15 33976/45045 135904/45045 3.01707181707182 8 1/17 622637/765765 2490548/765765 3.25236593471888 9 -1/19 11064338/14549535 44257352/14549535 3.04183961892940 |
matplotlib
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 |
import matplotlib.pyplot as plt PASSI=30 N=[] A=[] PI=[] def a(n): return ((-1)**n)/(2*n+1) Sn=0 for n in range(0,PASSI): an =a(n) Sn+=an pin=4*Sn print(n, an, Sn, pin) N.append(n) A.append(an) PI.append(pin) plt.subplot(2,1,1) plt.grid() plt.plot(N,PI, linewidth="2") plt.title("Pi greco: serie di Leibniz") plt.ylabel("pi(n)") plt.subplot(2,1,2) plt.bar(N,A, color="green") plt.grid() plt.xlabel("n") plt.ylabel("a(n)") plt.show() |