from pylab import *
%matplotlib inline
V
: volume (ml)
W
: peso (g)
D
: diametro pistone (mm)
dV
: incertezza sul volume (ml)
dW
: incertezza sul peso (g)
dD
: incertezza diametro pistone (mm)
V = array([9, 8, 7, 6, 5, 4, 3])
W = array([250, 520, 800, 1205, 1720, 2600, 4000])
D = 15e-3
dV = 0.1
dW = 100
dD = 0.5e-3
errorbar(V, W, yerr=dW, xerr=dV, fmt='o')
xlabel("V (ml)")
ylabel("Weight (g)");
Area pistone e relativo errore
S = pi*(D/2)**2
dS = pi*D*dD/2
dS
1.1780972450961723e-05
Conversione da grammi (peso) a Newton
F = W/1000*9.8
dF = dW/1000*9.8
Calcolo pressioni e relativi errori (kPa)
P = F/S/1e3
dP = (dF/F+dS/S)*P
errorbar(V, P, xerr=dV, yerr=dP, fmt="o")
ylabel("Pressure (kPa)")
xlabel("Volume (ml)")
Text(0.5, 0, 'Volume (ml)')
errorbar(1/V, P, xerr=dV/V**2, yerr=dP, fmt="o")
p = polyfit(1/V, P, 1)
x = linspace(0,0.4, 10)
plot(x, polyval(p,x))
xlim(0)
xlabel("1/V (ml$^{-1}$)")
ylabel("P (kPa)")
p
array([930.92194613, -88.83915972])
Intercetta a
Ridefiniamo P aggiungendo il valore noto della pressione atmosferica e verifichiamo (entro le barre d'errore) la legge di Boyle: PV=cost
P0 = 101.3
Ptot = P+P0
PV = (Ptot*1e3)*(V*1e-6) #in Joule
errorbar(Ptot, PV, xerr=dP, yerr=(dV/V+dP/Ptot)*PV, fmt="o")
axhline(mean(PV), color='C1', lw=2)
axhline(1.013e5*10e-6, color='C2', lw=2)
xlim(0)
ylim(0,2)
xlabel("P (kPa)")
ylabel("PV (J)")
Text(0, 0.5, 'PV (J)')
PV0=mean(PV)
PV0
1.005820340526633