Sei sulla pagina 1di 13

RELAZIONE sul calcolo dell’accelerazione di gravità

(9,802 m/s^2, Camerino)


DI GIULIA ANGELUCCI (n.MAT: 114147) E ANNA LEA QUINTAVALLE (n.MAT:114674)
L’esperimento proposto consiste nella misurazione dell’accelerazione di gravità attraverso lo studio
del periodo di oscillazione di un pendolo semplice.
Lo strumento utilizzato, previa l’allineamento con la verticale al terreno, è costituito da un sostegno
rigido collegato ad un filo inestensibile, di massa trascurabile, di lunghezza (L) variabile tra 40 cm e
140 cm, al quale si appende per mezzo di una vite una sfera rigida di massa m. Ai fini
dell’esperimento la massa dell’oggetto è ininfluente sul risultato, infatti la legge che descrive il
periodo è la seguente:
T =2 π √ ❑, dove g è l’accelerazione di gravità.
Segue una schematizzazione grafica della situazione da analizzare.

La legge precedentemente riportata è valida soltanto per piccole oscillazioni, pertanto abbiamo
scelto di rilasciare il pendolo ad angoli α di ampiezza iniziale inferiore a 10-15°.
Le misurazioni vengono effettuate trascurando lo smorzamento dovuto all’aria e mediando il
periodo su 10 oscillazioni per minimizzare l’errore, il cui valore si ricava da:
ΔT =2 ΔT ❑reazione /10+ Δ T ❑strumento

dove il tempo di reazione è dovuto alla sensibilità dello sperimentatore. Abbiamo appurato che tale
errore non è maggiore della sensibilità dello strumento,come ci aspettavamo, e pertanto la misura è
consistente.
Per quanto riguarda la lunghezza del filo, l’errore è calcolato sulla base della precisione dello
strumento impiegato (metro a nastro) di 0.05 cm; inoltre si è tenuto conto della approssimazione del
sistema sfera-vite come una sfera piena e perciò abbiamo considerato come centro di massa il
centro di essa.
La seguente tabella mostra i dati raccolti, corredati dei rispettivi errori:
∆ L(cm) Li (cm) T i (s) T (s ) ∆ T ( s)
0.05 40 1.27,1.28, 1.28 0.03
1.28,1.27
0.05 60 1.55,1.55 1.55 0.03
1.55,1.56
0.05 80 1.80,1.79, 1.80 0.05
1.80,1.78
0.05 100 2.00,2.00, 2.00 0.03
2.01,2.00
0.05 120 2.20,2.19 2.20 0.03
2.19,2.20
0.05 140 2.34,2.37 2.40 0.07
2.37,2.37

- Effettuate le misurazioni, abbiamo continuato con il calcolo di g, ricavandola dalla relazione


che lega il periodo T i e la lunghezza Li:

2 Li
gi=4 π ,
T i2
Δg
e ci siamo accertate che il valore percentuale di , calcolato come
g

∆T
(con l’errore sperimentale)
non superasse l’1-2% . Ciò ci assicura che la nostra ipotesi (ossia i valori di g ricavati) sia
accettabile, vale a dire che il valore misurato appartiene alla stessa “popolazione” e che quindi
stiamo effettivamente facendo calcoli corretti della misura dell’accelerazione di gravità.

m ∆g
gi
( )
s2 g
(%)

9.64 2%
9.86 1%

9.75 1%
9.87 1%

9.79 1%
9.60 2%
- Terminata la raccolta dei dati, abbiamo proceduto al calcolo del valore medio e deviazione
standard di T i2 con il seguente codice:

from math import*


import numpy as np
import matplotlib.pyplot as plt
t=[1.61,1.64,1.61,1.64]
media=np.average(t)
std=np.std(t)
print("Media=%.2f"%(media), "Deviazione Standard=%.4f"%(std))
otteniamo i seguenti valori con le rispettive deviazioni standard:

L(cm) T i2(s^2) Deviazione Standard

40 1,62 0,02

60 2,41 0,01

80 3,21 0,03

100 4,01 0,02

120 4,81 0,03

140 5,59 0,06

- Fatto ciò, si procede con il tracciare un grafico che rappresenta il valore di T 2al variare del
misura di L, considerando gli errori delle misure discussi sopra, ed evidenziando le rette con
4π2
pendenza p= massima e minima.
g
Sperimentalmente, si dovrà avere che 3.999 ≈ p min ≤ p ≤ pmax ≈ 4.112 . Mostriamo il grafico di
pendenza massima e minima (1):
Alleghiamo il grafico realizzato manualmente su carta millimetrata.

Osserviamo che i dati che abbiamo raccolto (le croci) sono compresi tra le rette di massima e
1 1
minima pendenza, per cui sono accettabili. Avremo dunque che 9.87 ≈ ≤g≤ ≈ 9.60
4 π pmax 4 π pmin

- Il seguente grafico (2) ci mostra il best-fitting, ossia la retta ottenuta dai valori di lunghezza
e di g=9,802 m/s^2:
- Data la validità dei calcoli, procediamo al calcolo effettivo dell’accelerazione di gravità
ottenendo: Media=9.75 Deviazione Standard=0.1022 (3):

g=(9.80 ± 0.10)m/ s2

Possiamo procedere al calcolo dell’accelerazione di gravità valutando anche i σ i2, ossia con la media
pesata g p, dove
ΔL ΔT
σ i2=Δ g=g ( +2 ), ottenendo:
L T
❑ ❑
1
g p =∑ (g¿¿ i/σ 2i )/ ∑ 2
=9,77 m/s 2 ¿
i i σi

e σ 2=0,28
Dato che la g=9,802 m/s^2 rientra in entrambi gli intervalli di errore, possiamo ritenere i risultati
soddisfacenti.

Accelerazione di σ2 95% confidenza


gravità

Media g 9.80 m/s 2 0.10 (9,7 ± 0,2 ¿ m/s2

Media Pesata g p 9,77 m/ s2 0,28 (9,8 ± 0,6 ¿ m/s 2

Metodo minimi 9,63m/s 2 0,14 (9,6 ± 0,3 ¿ m/s 2


quadrati
(senza errore sui dati)

Metodo Polyfit 9,85m/s 2 0,05 (9,8 ± 0,1 ¿ m/ s2


Possiamo concludere quindi che anche con gli altri metodi, i cui programmi di calcolo sono riportati
qui sotto, sono soddisfacenti perché il valore atteso di g rientra negli intervalli di confidenza.

- Alleghiamo i seguenti programma (i calcoli completi per l’accelerazione di gravità media e


pesata, con le rispettive deviazioni standard etc).
CODICE PENDENZA MASSIMA E MINIMA (1)
from math import *
import numpy as np
import matplotlib.pyplot as plt
x= [0.4,0.6,0.8,1.0,1.2,1.4]
y=[1.62, 2.41, 3.21, 4.01, 4.81, 5.59]
#pendenza massima
pmax=4.112
y_max=[k*pmax for k in x]
nn=len(x)
print(nn)
for i in range (0,nn,1):
y_max[i]=x[i]*pmax
#pendenza minima
pmin =3.999
y_min=[xx*pmin for xx in x]
plt.errorbar(x, y, yerr=0.03, fmt='o')
plt.errorbar(x,y_max)
plt.errorbar(x, y_min)
plt.title("Quadrato del periodo in funzione della lunghezza")
plt.xlabel("L(m)")
plt.ylabel("T^2(s^2)")
plt.show()
CODICE DEL BEST FITTING (2)
import numpy as np
import matplotlib.pyplot as plt
import pylab as pl
lon=[0.4,0.6,0.8,1,1.2,1.4]
pre=4.*np.pi**2/9.8020
y=[x*pre for x in lon]
yerr=[0.02,0.01,0.03,0.02,0.03,0.06]
xerr=[0.05,0.05,0.05,0.05,0.05,0.05]
pl.figure()
pl.errorbar(lon, y, xerr, yerr)
pl.title("simplest plot")
pl.xlabel('L(m)')
pl.ylabel('T^2(s^2)')
pl.legend()
pl.show()

CODICE CALCOLO ACCELERAZIONE DI GRAVITÀ (3)


from math import *
import matplotlib.pyplot as plt
from matplotlib import pylab
import numpy as np
import matplotlib.pyplot as plt
from numpy.linalg import inv
import matplotlib.pyplot as plt
from scipy.interpolate import *
print("lunghezze e errori")
x=np.array([0.40,0.60,0.80,1.00,1.20,1.40])
sigx=np.array([0.05,0.05,0.05,0.05,0.05,0.05])

print ('x=', x)

npt=len(x)
print ('N points' ,len(x))
#tempi e errori in secondi
print("periodo e errore*")
t=np.array([1.28,1.55,1.80,2.00,2.20,2.40])
print ('T=',t)
sigt=np.array([0.03,0.03,0.05,0.03,0.03,0.07])
print ('sigT=',sigt)
t2=[]
t2=t**2
sigt2=[]
sigt2=2.*t*sigt
sig=[]
sigmag=[]
sig=sigt2
#calcolo di g e errore propagato.
g=[]
g=4*pi**2*x/t2
print("************************************************")
print("************************************************")

print('g=',g)
sigmag=g*(sigx**2/x**2+sig**2/t2**2)**0.5
print ("sigmag=",sigmag)

print("calcolo g medio e deviazione standard")


print ("media e dev st. g",np.mean(g),np.std(g))

print("************************************************")
print(' 95 per cento confidenza g= %8.1f +/- %8.1f' %(np.mean(g), 2*np.std(g)))
print("************************************************")

print("************************************************")
print("************************************************")
#calcolo pesi
sigmag_1=(1/sigmag)**2

sum=np.sum(sigmag_1)
weign=sigmag_1/sum

print("calcolo g media pesata e deviazione standard")

g_weight=np.average(g,weights=weign)
sigmag_weight= sqrt(1/sum)
print ("media pesata e dev st. g",g_weight,sigmag_weight)

print("************************************************")
print("************************************************")
print("************************************************")
print(' 95 per cento confidenza g= %8.1f +/- %8.1f' %(g_weight,2*sigmag_weight))
print("************************************************")

print("Metodo dei minimi quadrati (y=A+BX) senza errore sui dati" )


sx= np.sum(x)
sx2=np.sum(x**2)
sy=np.sum(t2)
sxy=np.sum(t2*x)

A= (sx*sxy-sy*sx2)/(sx**2-npt*sx2)
B= (sx*sy-npt*sxy)/(sx**2-npt*sx2)

print('A=', A, 'B=',B)

print("************************************************")
print("************************************************")
#errore dei dati come scarto rispetto alla retta
scarto=[]
scarto=(t2-A-B*x)**2
sigmq= np.sqrt(1/(npt-2)*np.sum(scarto))
print( "sigmq=",sigmq)

print("************************************************")
print("************************************************")
#errore propagato per i minimi quadrati
sigA= sqrt(sigmq**2*sx2/(npt*sx2-sx**2))
sigB= sqrt(sigmq**2*npt/(npt*sx2-sx**2))

print('sigA=', sigA, 'sigB=',sigB)

print("************************************************")
print("************************************************")

# g medio e errore su g

g_mq=4.*np.pi**2/B
sig_gmq=g_mq*sigB/B

print('g_mq=', g_mq, 'sig_gmq=',sig_gmq)

print(' 95 per cento confidenza g= %8.1f +/- %8.1f' %(g_mq,2*sig_gmq))


print("************************************************")

print("Metodo polyfit (con pesi pari all'inverso della dev standard dei dati var dipendente")

p1=np.polyfit(x,t2,1,w=1/sig,cov=True)
print ("sig",sig)
print (p1)
print ("fit y=a+bx a=",p1[0][1],"b=",p1[0][0])
print ("a= 4 pi^2/g ")
print ("sig_a",sqrt(p1[1][1][1]/(npt-2)))
print ("sig_b",sqrt(p1[1][0][0]/(npt-2)))
g_fit=4.*np.pi**2/p1[0][0]
dg_fit=4.*np.pi**2/p1[0][0]*((p1[1][0][0]/(npt-2))**0.5)/B
print ("g_fit = " ,g_fit, "dG_fit", dg_fit)
print('95% di confidenza ')
print ('g_fit = %8.1f , dg_fit = %8.1f' % (g_fit,2*dg_fit))

print("************************************************")

f=p1[0][0]*x

plt.plot(x,f)
plt.plot(x,g)

plt.errorbar(x,t2,yerr=sig)
plt.show()

ottenendo:

lunghezze e errori
x= [0.4 0.6 0.8 1. 1.2 1.4]
N points 6
periodo e errore*
T= [1.28 1.55 1.8 2. 2.2 2.4 ]
sigT= [0.03 0.03 0.05 0.03 0.03 0.07]
************************************************
************************************************
g= [9.63828555 9.85933426 9.74775743 9.8696044 9.78803742 9.59544872]
sigmag= [1.28671168 0.90592656 0.81512877 0.57549188 0.48743176 0.65630961]
calcolo g medio e deviazione standard
media e dev st. g 9.749744631547673 0.10334157981947574
************************************************
95 per cento confidenza g= 9.7 +/- 0.2
************************************************
************************************************
************************************************
calcolo g media pesata e deviazione standard
media pesata e dev st. g 9.767456809330353 0.2786669817049505
************************************************
************************************************
************************************************
95 per cento confidenza g= 9.8 +/- 0.6
************************************************
Metodo dei minimi quadrati (y=A+BX) senza errore sui dati
A= -0.040676190476190116 B= 4.097214285714285
************************************************
************************************************
sigmq= 0.05127030375976955
************************************************
************************************************
sigA= 0.05899003326786063 sigB= 0.06127973386294132
************************************************
************************************************
g_mq= 9.635429062621016 sig_gmq= 0.14411170308358162
95 per cento confidenza g= 9.6 +/- 0.3
************************************************
Metodo polyfit (con pesi pari all'inverso della dev standard dei dati var dipendente
sig [0.0768 0.093 0.18 0.12 0.132 0.336 ]
(array([4.00901133, 0.01976895]), array([[ 0.00186048, -0.00128748],
[-0.00128748, 0.00106242]]))
fit y=a+bx a= 0.01976894522641422 b= 4.009011333543027
a= 4 pi^2/g
sig_a 0.016297406931437896
sig_b 0.021566666618578638
g_fit = 9.847419804989116 dG_fit 0.051834247656481675
95% di confidenza
g_fit = 9.8 , dg_fit = 0.1
************************************************

Potrebbero piacerti anche