Verifica della legge di Boyle in cucina

from pylab import * %matplotlib inline

Materiale

  1. siringa da 10 ml
  2. bilancia da cucina
  3. righello

img

Analisi dei dati

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)");

png

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)')

png

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])

png

Intercetta a 105\sim -10^5 Pa: è la pressione atmosferica che avevamo dimenticato di aggiungere a P!

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)')

png

PV0=mean(PV) PV0
1.005820340526633