光学问题——夫琅禾费单缝衍射实验的matlab模拟

前言:

夫琅禾费衍射是一个经典的的光学问题,对于这个问题,其中的函数公式很复杂,难以直观的看出光强的变化规律,这里,我们借助matlab编程进行作图,以便直观地观察。

相关公式:

(参考教材为姚启钧先生所著普通物理光学教程)

P点处的光强为

I=I_0\times sin^2u/u^2

其中:

u=(\pi b)/\lambda \times sin \theta

研究内容:

我们研究夫琅禾费衍射的近轴的不同位置的光强以及选取缝宽对于该点光强的影响规律,由于光的波长与缝宽总是以比值的形式出现,即这一项的次数恒为零,不失一般性地,可以定波长为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,运行程序,得到了上图中的图像,根据此图像我们可以在底面的二维层度探究光强的变化规律。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值