# Run this Python cell by selecting it and then pressing shift-enter
# Do not change anything in this cell
# These commands load the libraries for Python to use
!pip install pandas
import pandas as pd
import numpy as np
!pip install openpyxl
#Code cell provided for calculations of the theoretical resonant wavelenths and frequencies.
#Show your work to receive credit.
L = 1.2
u = 0.0012
v = np.sqrt((9.8*.1)/u)
waveL1 = (2*L)/1
f1 = v/waveL1
waveL2 = (2*L)/2
f2 = v/waveL2
waveL3 = (2*L)/3
f3 = v/waveL3
waveL4 = (2*L)/4
f4 = v/waveL4
waveL5 = (2*L)/5
f5 = v/waveL5
v2 = np.sqrt((9.8*.2)/u)
newf1 = v2/waveL1
newf2 = v2/waveL2
newf3 = v2/waveL3
newf4 = v2/waveL4
newf5 = v2/waveL5
print(waveL1, waveL2, waveL3, waveL4, waveL5)
print(f1, f2, f3, f4, f5)
print(newf1, newf2, newf3, newf4, newf5)
#Code cell provided for calculations of the corresponding wavelengths. Show your work to receive credit.
#It may be helpful to first calculate the wavespeed using Eq. 44 for both scenarios and then use Eq. 43 to use
#the wave speed to convert the frequencies from Table 2 into a wavelength.
v = np.sqrt((9.8*.1)/u)
waveL100_1 = v/11.2
waveL100_2 = v/22.3
waveL100_3 = v/35.5
waveL100_4 = v/48.7
waveL100_5 = v/61.2
v2 = np.sqrt((9.8*.2)/u)
waveL200_1 = v2/16.3
waveL200_2 = v2/33
waveL200_3 = v2/52.5
waveL200_4 = v2/70
waveL200_5 = v2/87.3
#To calculate % Error, use (Corresponding - Theoretical)/ Theoretical x 100
error1 = (waveL100_1 - waveL1)/(waveL1 * 100)
error2 = (waveL100_2 - waveL2)/(waveL2 * 100)
error3 = (waveL100_3 - waveL3)/(waveL3 * 100)
error4 = (waveL100_4 - waveL4)/(waveL4 * 100)
error5 = (waveL100_5 - waveL5)/(waveL5 * 100)
errornew1 = (waveL200_1 - waveL1)/(waveL1 * 100)
errornew2 = (waveL200_2 - waveL2)/(waveL2 * 100)
errornew3 = (waveL200_3 - waveL3)/(waveL3 * 100)
errornew4 = (waveL200_4 - waveL4)/(waveL4 * 100)
errornew5 = (waveL200_5 - waveL5)/(waveL5 * 100)
print(waveL100_1, waveL100_2, waveL100_3, waveL100_4, waveL100_5)
print(waveL200_1, waveL200_2, waveL200_3, waveL200_4, waveL200_5)
print(error1, error2, error3, error4, error5)
print(errornew1, errornew2, errornew3, errornew4, errornew5)
#Code cell provided for calculations of the corresponding wavelengths
#and the theoretical resonant wavelengths and frequencies. Show your work to receive credit.
#Eq. 43 and 49 from the Lab Manual will be helpful.
#The first corresponding wavelength column is for your measured frequencies
#The second theo. wavelength column is using Eq. 49, then convert this to frequency with Eq. 43
v_air = 340.3 #m/s (speed of sound in air)
cWaveL1 = v_air/132
cWaveL2 = v_air/269
cWaveL3 = v_air/405
cWaveL4 = v_air/529
cWaveL5 = v_air/656
print(cWaveL1, cWaveL2, cWaveL3, cWaveL4, cWaveL5)
L = 1.22
waveL1 = (2*L)/1
f1 = v_air/waveL1
waveL2 = (2*L)/2
f2 = v_air/waveL2
waveL3 = (2*L)/3
f3 = v_air/waveL3
waveL4 = (2*L)/4
f4 = v_air/waveL4
waveL5 = (2*L)/5
f5 = v_air/waveL5
print(waveL1, waveL2, waveL3, waveL4, waveL5)
print(f1, f2, f3, f4, f5)
df1 = pd.read_excel("Lab11_classdata.xlsx")
#Here we take the columns of the xlsx files and separate them so that each of the resonant frequencies
#for each normal mode can be analyzed separately; we also remove any empty rows with .dropna()
mode1 = df1['number1'].dropna()
mode2 = df1['number2'].dropna()
mode3 = df1['number3'].dropna()
mode4 = df1['number4'].dropna()
mode5 = df1['number5'].dropna()
stringmodes = [mode1,mode2,mode3,mode4,mode5]
def get95PercentConfidenceInterval(mean,sigma,N):
sigma_x = sigma/np.sqrt(N)
print('The Error of the mean is '+str(sigma_x)+'.')
lbof95CI = mean - 1.96*sigma_x
print('The Lower Bound of the 95% confidence interval is '+str(lbof95CI)+'.')
ubof95CI = mean + 1.96*sigma_x
print('The Upper Bound of the 95% confidence interval is '+str(ubof95CI)+'.')
widthof95CI = ubof95CI - lbof95CI
print('The Width of the 95% confidence interval is '+str(widthof95CI)+'.')
for index,mode in enumerate(stringmodes):
mean_mode = np.mean(mode)
std_dev_mode = np.std(mode)
print('Statistics for the resonant frequency of normal mode '+str(index+1))
print('Mean: '+str(mean_mode))
print('Std. Dev.: '+str(std_dev_mode))
print('samples: ' + str(len(mode)))
get95PercentConfidenceInterval(mean_mode,std_dev_mode,len(mode))
print()