本文基于光学原理,用Matlab实现非单色光双缝干涉现象仿真。
Project Code
- 干涉原理:基于单色光的双缝干涉,将不同波段的光进行干涉后,光强进行叠加。
- 代码中采用11束单色光组成的非单色光束进行模拟。
% 作者:ZQJ
% 日期:2021.1.5 星期二
%***********************模拟非单色光双缝干涉现象**************************
clear,clc;
% 基本参数输入及处理*********************************
% 本例输入:Lambda = 500; d = 2; D = 1; N_light = 11;
Lambda = input('输入其中一束光的波长(单位为nm):');
Lambda = Lambda * 1e-9; %波长单位转为:m
d = input('输入两个缝的间距(单位为mm):');
d = d * 1e-3; %缝间隙单位转为:m
D = input('输入缝到屏的距离(单位为m):');
N_light = input('输入有几束单色光:');
I0 = 1; %假定波的光强统一
Xmax = 5*Lambda*D/d; %Xmax取第五级亮纹位置(边界)--单位为:m
x = linspace(-Xmax,Xmax,101); %坐标取样101份
I = zeros(101,1);
for i=1:101
r1 = sqrt((x(i)+d/2)^2+D^2); %在x坐标轴上的情况
r2 = sqrt((x(i)-d/2)^2+D^2);
dL = linspace(-0.1,0.1,N_light); %取11束单色光
Lambda_s = Lambda*(1+dL);
phi = 2*pi*(r2-r1)./Lambda_s; %各单色光相位差
I(i,:) = sum(4*I0*cos(phi/2).^2)/N_light; %合成波光强
end
% 合成光强灰度分布图*************************
I_change = I./4 .*255; %光强归一化 并转为255灰度值
subplot(2,1,1);
image(x,Xmax,I_change'); %设置x和y的像素,显示数值
colormap(gray(255)); %妆点灰度色彩
xlabel('空间坐标x');
title('合成光强空间分布');
% 合成光强函数分布图*************************
subplot(2,1,2);
plot(x,I');
axis([-Xmax,Xmax,0,4]);
xlabel('空间坐标x'), ylabel('合成光强度');
title('合成光强空间分布函数');
仿真结果图:
专栏内容供作者本人或大家学习使用,多多指教 ~