Картина интенсивности дифракции на одной щели
Данные взяты из эксперимента по дифракции на одной щели, щель имела размер 0,08 мм = 0,00008 м, длина волны 650 нм = 0,00000065 м. Расстояние между щелью и датчиком освещенности составляло 70 см = 0,7 м. В эксперименте датчик освещенности располагался перед щелью на расстоянии 70 см (назовем точку, где находится щель, точкой S, а точку, где датчик освещенности поместил точку О), перед съемом данных определим местоположение датчик освещенности меняется по оси, перпендикулярной линии SO, затем данные снимаются по этой оси. Я пытался подогнать свои данные под интенсивность уравнения дифракции на одной щели в Python, но, поскольку ему приходилось работать со слишком маленькими числами, его нельзя было оптимизировать, тогда я попробовал с Matlab, это тоже не работает, и я не не знаю почему.
Подбор кривой в Matlab
Обратите внимание, что sin(theta) — это x/sqrt(x^2+L^2), где L=0,7, а b — горизонталь. сдвиг значений x.
Код: Выделить всё
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def intensityFunction(x, a, b):
numerator = np.sin(np.pi * (x - b) * 0.00008 / (np.sqrt(0.49 + x ** 2 - 2 * b * x + b ** 2) * 0.00000065))
denominator = np.pi * (x - b) * 0.00008 / (np.sqrt(0.49 + x ** 2 - 2 * b * x + b ** 2) * 0.00000065)
return a* (numerator/denominator)**2
positions = np.array(positionArray)
lightIntensity=np.array([LightIntensityArray])
popt, pcov = curve_fit(intensityFunction, positions, lightIntensity, p0=[1,0])
a_opt, b_opt = popt
plt.scatter(positions, lightIntensity, label="Data", s=4)
plt.plot(positions, intensityFunction(positions, a_opt, b_opt), color='red', label='Fit: a={:.2f}, b={:.2f}'.format(a_opt, b_opt))
plt.xlabel('Position (m)')
plt.ylabel('Light Intensity (% max)')
plt.legend()
plt.show()
Интенсивность света (%макс): [0,061] , 0,061, 0,061, 0,061, 0,061, 0,061, 0,073, 0,061, 0,067, 0,061, 0,067, 0,067, 0,061, 0,079, 0,055, 0,061, 0,055, 0,061, 0,0 61, 0,067, 0,079, 0,067, 0,061, 0,061, 0,067, 0,067, 0,061, 0,073, 0,049, 0,055, 0,067, 0,073, 0,061, 0,061, 0,061, 0,061, 0,061, 0,061, 0,073, 0,061, 0,061, 0,061, 0,061, 0,0 49, 0,055, 0,067, 0,049, 0,055, 0,055, 0,043, 0,067, 0,061, 0,067, 0,067, 0,061, 0,061, 0,085, 0,067, 0,055, 0,061, 0,061, 0,055, 0,055, 0,049, 0,061, 0,055, 0,043, 0,061, 0,0 67, 0,061, 0,079, 0,043, 0,061, 0,049, 0,061, 0,055, 0,061, 0,061, 0,061, 0,055, 0,067, 0,073, 0,061, 0,061, 0,061, 0,055, 0,055, 0,061, 0,067, 0,055, 0,043, 0,055, 0,049, 61, 0,055, 0,073, 0,061, 0,055, 0,061, 0,061, 0,055, 0,055, 0,073, 0,049, 0,061, 0,055, 0,073, 0,055, 0,073, 0,043, 0,061, 0,055, 0,049, 0,073, 0,061, 0,061, 0,061, 0,055, 0,0 49, 0,061, 0,073, 0,067, 0,061, 0,061, 0,049, 0,067, 0,049, 0,067, 0,055, 0,061, 0,061, 0,061, 0,067, 0,055, 0,061, 0,061, 0,061, 0,061, 0,073, 0,061, 0,061, 0,061, 0,049, 79, 0,061, 0,079, 0,079, 0,067, 0,079, 0,079, 0,055, 0,049, 0,067, 0,085, 0,061, 0,067, 0,092, 0,067, 0,073, 0,079, 0,061, 0,049, 0,061, 0,073, 0,067, 0,061, 0,067, 0,067, 0,0 73, 0,079, 0,085, 0,085, 0,073, 0,085, 0,098, 0,067, 0,073, 0,098, 0,079, 0,067, 0,073, 0,085, 0,073, 0,073, 0,067, 0,067, 0,079, 0,049, 0,073, 0,055, 0,055, 0,049, 0,067, 0,0 67, 0,061, 0,079, 0,079, 0,085, 0,098, 0,098, 0,098, 0,098, 0,116, 0,067, 0,061, 0,055, 0,085, 0,067, 0,085, 0,104, 0,146, 0,146, 0,146, 0,171, 0,159, 0,159, 0,165, 0,153, 0,1 46, 0,098, 0,092, 0,079, 0,073, 0,079, 0,085, 0,098, 0.098, 0.104, 0.098, 0.11, 0.14, 0.183, 0.195, 0.244, 0.287, 0.342, 0.372, 0.391, 0.403, 0.391, 0.342, 0.293, 0.244, 0.238 , 0,22, 0,238, 0,195, 0,195, 0,195, 0,195, 0,183, 0,177, 0,183, 0,165, 0,244, 0,488, 0,678, 0,708, 1,007, 1,428, 1,679, 1,99, 2,539, 3,272, 4,254, 5,176, 5,689, 5,963, 6,11 6, 6,299, 6,25, 6,11, 6,079, 6,012, 5,756, 5,438, 5.078, 4.651, 4.193, 3.864, 3.662, 3.565, 3.424, 3.272, 3.174, 3.082, 3.076, 3.125, 3.198, 3.369, 3.412, 3.418, 3.369, 3.2 9, 3,174, 3,131, 3,107, 3,095, 3,088, 3,088, 3,082, 3.064, 3.04, 3.052, 3.003, 2.948, 2.966, 2.93, 2.905, 2.863, 2.832, 2.783, 2.655, 2.344, 1.758, 1.27, 0.885, 0.482, 0.244, 0,159, 0,159, 0,165, 0,214, 0,25, 0,293, 0,354, 0,391, 0,385, 0,342, 0,269, 0,208, 0,189, 0,14, 0,098, 0,098, 0,098, 0,098, 0,134, 0,159, 0,146, 0,159, 0,153, 0,171, 7, 0,165, 0,195, 0,195, 0,183, 0,189, 0,171, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195, 0,189, 0,195, 0,177, 0,177, 0,165, 0,195, 0,159, 0,153, 0,153, 0,146, 46, 0,14, 0,153, 0,134, 0,122, 0,128, 0,116, 0,11, 0,098, 0,098, 0,073, 0,079, 0,073, 0,092, 0,079, 0,104, 0,14, 0,14, 0,098, 0,098, 0,092, 0,061, 0,079, 0,073, 0,073, 0,085 , 0,085, 0,104, 0,098, 0,098, 0,104, 0,098, 0,098, 0,098, 0,079, 0,079, 0,061, 0,061, 0,067, 0,061, 0,061, 0,055, 0,055, 0,055, 0,067, 0,085, 0,079, 0,073, 0,085, 0,079, 0,0 79, 0,092, 0,104, 0,073, 0,073, 0,073, 0,085, 0,055, 0,067, 0,055, 0,067, 0,061, 0,055, 0,067, 0,055, 0,085, 0,085, 0,073, 0,079, 0,073, 0,092, 0,073, 0,073, 0,079, 0,079, 0,0 79, 0,067, 0,085, 0,073, 0,055, 0,061, 0,055, 0,061, 0,061, 0,055, 0,061, 0,055, 0,073, 0,067, 0,055, 0,061, 0,067, 0,061, 0,055, 0,055, 0,061, 0,055, 0,067, 0,061, 0,055, 0,0 67, 0,061, 0,073, 0,061, 0,061, 0,061, 0,067, 0,049, 0,067, 0,043, 0,061, 0,055, 0,067, 0,067, 0,055, 0,061, 0,067, 0,061, 0,061, 0,055, 0,079, 0,061, 0,055, 0,061, 0,055, 0,0 61, 0,067, 0,067, 0,055, 0,055, 0,055, 0,061, 0,055, 0,055, 0,055, 0,055, 0,067, 0,061, 0,055, 0,061, 0,067, 0,055, 0,061, 0,061, 0,055, 0,067, 0,055, 0,061, 0,055, 0,055, 0,0 67, 0,061, 0,067, 0,061, 0,061, 0,067, 0,073, 0,067, 0,061, 0,055, 0,055, 0,055, 0,061]
Подробнее здесь: https://stackoverflow.com/questions/784 ... attern-cur