1 内容介紹
通過Matlab軟體程式設計,實作光學雙縫幹涉的計算機仿真.仿真結果對學生了解光學原理的基本概念很有幫助,提高了教學效果.
2 部分代碼
%REDME!!!該仿真模拟了雙孔幹事實驗中光屏逐漸遠離雙孔時幹涉圖像的變化,按空格鍵仿真停止
%—————————————————————————————————————
flag = 1;
t = 0;
d = 0.2; %兩孔的距離(兩孔中心正對幹涉屏中心)
%預設兩孔平行于X軸
Lambda = 500e-6; %幹涉光波長(mm)
x_scale = 120; %圖像長度
y_scale = 4000; %圖像寬度
x_temp = linspace(-x_scale/2, x_scale/2, 601);
y_temp = linspace(-y_scale/2, y_scale/2, 501);
[X, Y] = meshgrid(x_temp, y_temp); %建立網格矩陣用于二維繪圖
while flag
input = get(gcf, 'currentkey');
if strcmp(input, 'space');
clc;
flag = 0;
end
D = 1500 + t; %雙孔到幹涉屏的距離(mm)
R1 = sqrt((X-d/2).^2+Y.^2+D^2);
R2 = sqrt((X+d/2).^2+Y.^2+D^2); %計算網格坐标點到兩孔的距離
Delte = (R1-R2)/Lambda * 2*pi; %計算網格坐标點到兩孔的相位差
I = (1./R1).^2 + (1./R2).^2 + 2*(1./R1).*(1./R2).*cos(Delte);
%計算兩孔到網格坐标點的相對光強
image(56 * I * D^2); %開始繪圖
colormap gray;
axis off;
axis equal;
title('楊氏雙孔幹涉(Young’s double pinhole interference)','FontSize',12);
pause(0.2);
t = t + 15;
end