Изучение спектров атома водорода и молекулы йода


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]:
θ, у. е. линия вещество λ, Å
0 2590 1 неон 7032
1 2510 2 неон 6929
2 2494 3 неон 6717
3 2482 4 неон 6678
4 2453 5 неон 6599
5 2437 6 неон 6533
6 2426 7 неон 6507
7 2388 8 неон 6402
8 2378 9 неон 6383
9 2362 10 неон 6334
10 2347 11 неон 6305
11 2331 12 неон 6267
12 2312 13 неон 6217
13 2290 14 неон 6164
14 2284 15 неон 6143
15 2262 16 неон 6096
16 2250 17 неон 6074
17 2230 18 неон 6030
18 2200 19 неон 5976
19 2192 20 неон 5945
20 2152 21 неон 5882
21 2146 22 неон 5852
22 2128 желтый 2 ртуть 5770
23 2103 желтый 1 ртуть 5791
24 1918 зеленый ртуть 5461
25 1882 23 неон 5401
26 1846 24 неон 5341
27 1836 25 неон 5331
28 1498 синий ртуть 4358
29 834 фиолетовый ртуть 4047

Водород


In [3]:
table_2 = pd.read_excel('lab-4-1.xlsx', '2'); table_2.iloc[:, :]


Out[3]:
θ, у. е. линия
0 2442 красный
1 1446 синий
2 804 фиолетовый

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


Длина волны красного света, Å - 6554
Длина волны синего света, Å - 4334
Длина волны фиолетового света, Å - 4033

Погрешность измерения барабана 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))


Длина волны красного света, Å - 6561
Длина волны синего света, Å - 4339
Длина волны фиолетового света, Å - 4101

Определение постоянной Ридберга - из формулы выше $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))


Постоянная для красного света, 1/см - 109863
Постоянная для синего света, 1/см - 109882
Постоянная для фиолетового света, 1/см - 111581
Среднее значение, 1/см - 109863
Правильное значение, 1/см - 109737

Погрешность измерения постоянной Ридберга зависит только от погрешности измерения барабана, откуда мы получаем: $$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}$$

Йод

2248 2320 2505 | 2245 2248 2505 | 2176 2248 2505 23 22 | 23 22 | 23 22 5401 l10 5852 | l15 5401 5852 | lgr 5401 5852

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


Длина волны для n_10, Å - 5527
Длина волны для n_15, Å - 5396
Длина волны для n_gr, Å - 5275

Энергия колебательного кванта возбужденного состояния молекулы йода: $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))


Энергия, эВ - 0.011

а) Энергия электронного перехода: $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))


Энергия электронного перехода, эВ - 2.27
Энергия диссоциации молекулы в основном состоянии, эВ - 2.32
Энергия диссоциации молекулы в возбужденногом состоянии, эВ - 1.38