Résonateur de Helmholtz

In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.optimize import curve_fit

materiel_resonateur_Helmholtz.jpg

In [2]:
data = pd.read_csv('Bouteille2.csv',sep=';', header=0)
In [3]:
data.head()
Out[3]:
m f
0 1416 374
1 1354 307
2 1253 243
3 1150 211
4 1061 191
In [4]:
# récupération des noms de colonnes et affectation de chaque colonne à un tableau
entete = list(data.columns)
print(entete)
m1 = data[entete[0]].values*1e-3 # conversion masse en kg
freq = data[entete[1]].values
['m', 'f']
In [5]:
plt.plot(freq, m1,'o')
plt.show()
In [6]:
m0 = 1530e-3
rho_eau = 1e3
V0 = (m0 - m1)/rho_eau
In [7]:
plt.plot(1/V0, freq**2,'o')
plt.show()
In [8]:
def f_lin(x, a):
    return a*x
In [9]:
pop, covop = curve_fit(f_lin, 1/V0, freq**2)
aop = pop
print(pop)
[16.27506424]
In [10]:
(1/V0).max()
Out[10]:
8771.929824561395
In [11]:
plt.plot(1/V0 , freq**2,'o')
invV0_th = np.linspace(0,(1/V0).max(), 2)
f2_th = f_lin(invV0_th, aop)
plt.plot(invV0_th, f2_th,'-')
plt.show()
In [12]:
m_tot_avec_g = 1555e-3  # masse totale bouteille remplie avec goulot
m_g = (m_tot_avec_g - m0) # masse en eau du  goulot
Vg = m_g/rho_eau
print(Vg*1e6)
D = 2.1e-2  # diamètre du goulot
S = np.pi*D**2/4  # surface du goulot
h = Vg/S
print("hauteur goulot = %.3f m" %h)
24.99999999999991
hauteur goulot = 0.072 m
In [13]:
gam = 1.4
P0 = 1e5
rho_air = 1.225  # masse volumique de l'air
Kth = 1/(4*np.pi**2)*gam*P0*S/(rho_air*h)
print(Kth)
13.89150000000005