前言:
夫琅禾费衍射是一个经典的的光学问题,对于这个问题,其中的函数公式很复杂,难以直观的看出光强的变化规律,这里,我们借助matlab编程进行作图,以便直观地观察。
相关公式:
(参考教材为姚启钧先生所著普通物理光学教程)
P点处的光强为
其中:
研究内容:
我们研究夫琅禾费衍射的近轴的不同位置的光强以及选取缝宽对于该点光强的影响规律,由于光的波长与缝宽总是以比值的形式出现,即这一项的次数恒为零,不失一般性地,可以定波长为600nm,只是人为给定缝宽的最大值,探究缝宽在这一定范围内的变化对同一点的光强影响规律。
程序代码:
%光学实验单缝衍射实验的 MATLAB 模拟
%光的波长 lambda 设定为 600nm
% 对于光的波长,定义与姚启钧先生光学教材定义不同
% 这里认为 theta 在主光轴下方为负值,在光轴上方为正值
% 所以 theta 取值范围是 [-1, +1] * 0.5pi
clc
clear
close all
b_max = input('缝的宽度(单位:纳米): '); % 键入缝的宽度
my_phi = linspace(-1, 1, 2000) .*0.5*pi;
my_k = linspace(1, b_max, 2000)./ 600; %取足够多值使得作图尽可能提高精确度
[my_phi_grid, my_k_grid] = meshgrid(my_phi, my_k); %绘制网格
I = my_intensity(600, b_max, my_phi_grid, my_k_grid); % 带入函数计算光强值矩阵
%绘制图像
figure;
surf(my_k_grid, my_phi_grid, I);
shading interp;
colormap jet; % 进行 jet 颜色映射
xlabel('缝的宽度(单位:纳米)');
ylabel('theta角(单位:rad)');
zlabel('光的强度I(单位:SI)');
对于其中的my_intenstity函数,其代码如下:
function I = my_intensity(~, b, theta, k)
inter_u = pi * b .* sin(theta) .* k;
I = 1.*(sin(inter_u).^2) ./ (inter_u.^2);
end
运行示例:
我们令缝宽为1200nm,运行程序,得到了上图中的图像,根据此图像我们可以在底面的二维层度探究光强的变化规律。