<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Изучение спектров атома водорода и молекулы йода
Step1:  Неон и ртуть
Step2:  Водород
Step3:  Погрешность измерения барабана 12 градусов. Отсюда находим погрешность измерения длин волн
Step4:  Определение постоянной Ридберга - из формулы выше $R = \frac{4n^2}{\lambda (n^2 - 4)}$
Step5:  Погрешность измерения постоянной Ридберга зависит только от погрешности измерения барабана, откуда мы получаем
Step6:  Энергия колебательного кванта возбужденного состояния молекулы йода
Step7:  а) Энергия электронного перехода
<ASSISTANT_TASK:>
Python Code:
import numpy as np; import scipy as sps; import matplotlib.pyplot as plt; import pandas as pd
%matplotlib inline
Explanation: Изучение спектров атома водорода и молекулы йода
End of explanation
table_1 = pd.read_excel('lab-4-1.xlsx', '1'); table_1.iloc[:, :4]
Explanation: Неон и ртуть
End of explanation
table_2 = pd.read_excel('lab-4-1.xlsx', '2'); table_2.iloc[:, :]
degrees = table_1.values[:, 0].tolist()[::-1]; len_waves = table_1.values[:, 3][::-1]; red, blue, violet = table_2.values[:, 0]
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()
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])
lred, lblue, lviolet = count_len(red), count_len(blue), count_len(violet)
print('Длина волны красного света, Å -', round(lred))
print('Длина волны синего света, Å -', round(lblue))
print('Длина волны фиолетового света, Å -',  round(lviolet))
Explanation: Водород
End of explanation
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))
Explanation: Погрешность измерения барабана 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}$
End of explanation
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))
Explanation: Определение постоянной Ридберга - из формулы выше $R = \frac{4n^2}{\lambda (n^2 - 4)}$
End of explanation
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))
Explanation: Погрешность измерения постоянной Ридберга зависит только от погрешности измерения барабана, откуда мы получаем:
$$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}$$
Йод
End of explanation
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))
Explanation: Энергия колебательного кванта возбужденного состояния молекулы йода: $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 с$
End of explanation
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))
Explanation: а) Энергия электронного перехода: $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 ~ эВ$
End of explanation
<END_TASK>