In [1]:
import numpy as np; import scipy as sps; import matplotlib.pyplot as plt; import pandas as pd
%matplotlib inline
Неон и ртуть
In [2]:
table_1 = pd.read_excel('lab-4-1.xlsx', '1'); table_1.iloc[:, :4]
Out[2]:
Водород
In [3]:
table_2 = pd.read_excel('lab-4-1.xlsx', '2'); table_2.iloc[:, :]
Out[3]:
In [4]:
degrees = table_1.values[:, 0].tolist()[::-1]; len_waves = table_1.values[:, 3][::-1]; red, blue, violet = table_2.values[:, 0]
In [5]:
plt.figure(figsize=(16, 8)); plt.title('Длина волны в зависимости от поворота', fontsize=18); plt.grid(ls='-')
plt.plot(degrees, len_waves, lw=2, label='Длина волны', color='black')
plt.xlabel('Градусы на барабане, у. е.', fontsize=15); plt.ylabel('Длина волны, Å', fontsize=15)
plt.xlim((750, 2600)); plt.ylim((4000, 7100))
plt.vlines(red, 4000, 7100, color='red'); plt.vlines(blue, 4000, 7100, color='blue'); plt.vlines(violet, 4000, 7100, color='violet')
plt.errorbar(degrees, len_waves, xerr=[15] * 30, fmt='o', color='black')
plt.show()
In [6]:
def max_lt(seq, val):
res = 0
while seq[res] < val:
res += 1
if res > 0:
res -= 1
return res
def count_len(x):
l = max_lt(degrees, x)
r = l + 1
coef = (len_waves[r] - len_waves[l]) / (degrees[r] - degrees[l])
return len_waves[l] + coef * (x - degrees[l])
In [7]:
lred, lblue, lviolet = count_len(red), count_len(blue), count_len(violet)
In [8]:
print('Длина волны красного света, Å -', round(lred))
print('Длина волны синего света, Å -', round(lblue))
print('Длина волны фиолетового света, Å -', round(lviolet))
Погрешность измерения барабана 12 градусов. Отсюда находим погрешность измерения длин волн: $$H_{\alpha} = 4033 \pm 120~Å,$$ $$H_{\beta} = 4334 \pm 60~Å,$$ $$H_{\delta} = 6554 \pm 36~Å$$
Сравним с реальностью: по формуле $\frac{1}{\lambda} = R(\frac{1}{4} - \frac{1}{n^2})$, $n = 3, 5, 6$, $R = 109737 ~ см^{-1}$
In [9]:
R_real = 109737
lred_real = (R_real * (0.25 - 1 / 9)) ** (-1) * 10 ** 8
lblue_real = (R_real * (0.25 - 1 / 25)) ** (-1) * 10 ** 8
lviolet_real = (R_real * (0.25 - 1 / 36)) ** (-1) * 10 ** 8
print("Длина волны красного света, Å -", round(lred_real))
print("Длина волны синего света, Å -", round(lblue_real))
print("Длина волны фиолетового света, Å -", round(lviolet_real))
Определение постоянной Ридберга - из формулы выше $R = \frac{4n^2}{\lambda (n^2 - 4)}$
In [10]:
Rred = 4 * 9 / (lred * 5) * 10 ** 8
Rblue = 4 * 25 / (lblue * 21) * 10 ** 8
Rviolet = 4 * 36 / (lviolet * 32) * 10 ** 8
R = (Rred + Rblue + Rviolet) / 3
print('Постоянная для красного света, 1/см -', round(Rred))
print('Постоянная для синего света, 1/см -', round(Rblue))
print('Постоянная для фиолетового света, 1/см -', round(Rviolet))
print('Среднее значение, 1/см -', round(Rred))
print('Правильное значение, 1/см -', round(R_real))
Погрешность измерения постоянной Ридберга зависит только от погрешности измерения барабана, откуда мы получаем: $$R_{\text{red}} = (1.09 \pm 0.04) \cdot 10^5 ~ см^{-1}$$ $$R_{\text{blue}} = (1.09 \pm 0.04) \cdot 10^5 ~ см^{-1}$$ $$R_{\text{violet}} = (1.11 \pm 0.06) \cdot 10^5 ~ см^{-1}$$ $$R = (1.09 \pm 0.04) \cdot 10^5 ~ см^{-1}$$
Йод
In [11]:
l10 = 5401 + (5852 - 5401) * (2320 - 2248) / (2505 - 2248)
l15 = 5401 + (5852 - 5401) * (2245 - 2248) / (2505 - 2248)
lgr = 5401 + (5852 - 5401) * (2176 - 2248) / (2505 - 2248)
print('Длина волны для n_10, Å -', round(l10))
print('Длина волны для n_15, Å -', round(l15))
print('Длина волны для n_gr, Å -', round(lgr))
Энергия колебательного кванта возбужденного состояния молекулы йода: $h\nu_2 = (h\nu_{1,5} - h\nu_{1,0}) / 5$, $\nu=\frac{c}{\lambda}$, $c = 3 \cdot 10^8 ~ м/c$, $h = 4.13 \cdot 10^{-15} ~ эВ \cdot с$
In [12]:
h = 4.13 * 10 ** -15; c = 3 * 10 ** 8
nu10 = c / (l10 * 10 ** -10); nu15 = c / (l15 * 10 ** -10); nugr = c / (lgr * 10 ** -10); hnu2 = h * (nu15 - nu10) / 5
print('Энергия, эВ -', round(hnu2, 3))
а) Энергия электронного перехода: $h\nu_{эл} = h\nu_{1,0} + h\nu_1$
б) Энергия диссоциации молекулы в основном состоянии: $Д_2 = h\nu_{gr} - h\nu_1$
в) Энергия диссоциации молекулы в возбужденногом состоянии: $Д_1 = Д_2 - E_A$
Здесь $h\nu_1 = 0.027 ~ эВ$, $E_A = 0.94 ~ эВ$
In [13]:
hnu1 = 0.027; E_A = 0.94
hnuel = h * nu10 + hnu1; D2 = h * nugr- hnu1; D1 = D2 - E_A
print('Энергия электронного перехода, эВ -', round(hnuel, 2))
print('Энергия диссоциации молекулы в основном состоянии, эВ -', round(D2, 2))
print('Энергия диссоциации молекулы в возбужденногом состоянии, эВ -', round(D1, 2))