基于matlab的光学实验仿真
·
基于matlab的光学实验仿真
包括衍射和干涉。具体有单缝菲涅耳衍射、单缝夫琅禾费衍射、杨氏双缝干涉、光栅衍射、牛顿环干涉五种实验。可进行缝数、波长、缝宽、屏距等参数设置。并显示原理图及可视化结果。

以下是一个基于 MATLAB 的光学实验仿真实现示例。我们将模拟一个经典的光学实验——杨氏双缝干涉实验。该实验通过两束相干光波的干涉,产生明暗相间的干涉条纹。
1. 实验原理
杨氏双缝干涉实验的基本原理:
- 光源发出的光经过两个狭缝后形成两束相干光波。
- 两束光波在屏幕上叠加,产生干涉现象。
- 干涉条纹的强度分布由以下公式描述:
[
I(x) = I_0 \cos^2\left(\frac{\pi d \sin\theta}{\lambda}\right)
]
其中:
- (I(x)): 屏幕上的光强分布。
- (I_0): 最大光强。
- (d): 双缝之间的距离。
- (\lambda): 光的波长。
- (\theta): 光线与屏幕法线的夹角(近似为 (\sin\theta \approx x / L))。
- (L): 双缝到屏幕的距离。
- (x): 屏幕上的位置坐标。
—
2. MATLAB 实现代码
function young_double_slit_experiment
% 杨氏双缝干涉实验仿真
clc;
clear;
% 参数设置
lambda = 632.8e-9; % 光波长 (m),红光 (He-Ne 激光)
d = 0.1e-3; % 双缝间距 (m)
L = 1; % 双缝到屏幕的距离 (m)
I0 = 1; % 最大光强
screen_width = 0.01; % 屏幕宽度 (m)
num_points = 1000; % 屏幕上的采样点数
% 屏幕上的位置坐标
x = linspace(-screen_width / 2, screen_width / 2, num_points);
% 计算干涉条纹强度分布
theta = x / L; % 近似 sin(theta) = x / L
I = I0 * cos(pi * d * theta / lambda).^2;
% 绘制结果
figure;
plot(x * 1e3, I, 'LineWidth', 1.5); % 将单位从米转换为毫米
xlabel('屏幕位置 (mm)');
ylabel('相对光强');
title('杨氏双缝干涉实验仿真');
grid on;
% 添加注释
text(-screen_width / 4 * 1e3, max(I) * 0.9, sprintf('波长: %.1f nm', lambda * 1e9), ...
'FontSize', 12, 'Color', 'blue');
text(-screen_width / 4 * 1e3, max(I) * 0.8, sprintf('双缝间距: %.1f mm', d * 1e3), ...
'FontSize', 12, 'Color', 'blue');
end
—
3. 功能说明
-
参数设置:
- 用户可以调整光波长 ((\lambda))、双缝间距 ((d)) 和屏幕距离 ((L)) 等参数。
- 默认使用 He-Ne 激光器的波长 (632.8 nm)。
-
光强计算:
- 使用干涉公式计算屏幕上各点的光强分布。
-
可视化:
- 绘制干涉条纹的强度分布图,横轴为屏幕位置,纵轴为相对光强。
-
单位转换:
- 屏幕位置以毫米为单位显示,便于观察。
4. 运行方法
- 将上述代码保存为一个
.m文件,例如young_double_slit_experiment.m。 - 在 MATLAB 中运行该文件:
young_double_slit_experiment。 - 查看输出结果,包括干涉条纹的强度分布图。
5. 扩展功能
-
动态参数调整:
- 添加 GUI 界面,允许用户动态调整波长、双缝间距和屏幕距离,并实时更新结果。
-
多缝干涉:
- 扩展模型以模拟三缝或更多狭缝的干涉现象。
-
光源特性:
- 考虑非单色光源的影响,引入波长分布以模拟白光干涉。
-
三维可视化:
- 使用
surf函数绘制三维光强分布图,展示更直观的干涉效果。
- 使用
6. 示例输出
运行代码后,您将看到类似以下的干涉条纹图:
杨氏双缝干涉实验仿真
------------------------
波长: 632.8 nm
双缝间距: 0.1 mm
干涉条纹表现为明暗相间的曲线,中心位置光强最大,两侧逐渐减弱。
更多推荐



所有评论(0)