MATLAB仿真实现杨氏实验,画出双缝干涉条纹及光强分布,波长450nm,两小孔距离1.5mm,小孔距光屏1m
时间: 2024-06-13 17:08:49 浏览: 13
以下是MATLAB仿真实现杨氏实验的代码,可以画出双缝干涉条纹及光强分布:
```matlab
% 定义常量
wavelength = 450e-9; % 波长450nm
d = 1.5e-3; % 两小孔距离1.5mm
D = 1; % 小孔距光屏1m
k = 2 * pi / wavelength; % 波数
% 定义坐标系
x = linspace(-0.02, 0.02, 1000); % 光屏上的x坐标
y = linspace(-0.02, 0.02, 1000); % 光屏上的y坐标
[X, Y] = meshgrid(x, y);
% 计算双缝干涉光强分布
r1 = sqrt((X - d/2).^2 + Y.^2);
r2 = sqrt((X + d/2).^2 + Y.^2);
I = (cos(k*r1) + cos(k*r2)).^2;
% 绘制双缝干涉条纹及光强分布
figure;
subplot(1,2,1);
imagesc(x, y, I);
colormap(gray);
axis image;
title('双缝干涉条纹');
xlabel('x (m)');
ylabel('y (m)');
subplot(1,2,2);
plot(x, I(500,:));
title('光强分布');
xlabel('x (m)');
ylabel('I');
```
运行以上代码,可以得到双缝干涉条纹及光强分布的图像。
相关问题
matlab仿真杨氏双缝干涉实验的代码
以下是 MATLAB 实现的杨氏双缝干涉实验的代码:
```matlab
% 设置参数
lambda = 633e-9; % 波长
d = 0.1e-3; % 双缝间距
D = 1; % 屏幕到双缝距离
a = 0.1e-3; % 缝宽
L = 0.5; % 屏幕大小
N = 500; % 屏幕像素数
% 计算干涉图样
x = linspace(-L/2, L/2, N);
[X, Y] = meshgrid(x, x);
r1 = sqrt((X-d/2).^2 + Y.^2);
r2 = sqrt((X+d/2).^2 + Y.^2);
I = (cos(pi*a*r1/lambda/D).^2 + cos(pi*a*r2/lambda/D).^2 + 2*cos(pi*a*r1/lambda/D).*cos(pi*a*r2/lambda/D)) / 2;
I = I / max(I(:));
% 显示干涉图样
figure;
imagesc(x, x, I);
colormap('gray');
axis('equal', 'tight');
title('杨氏双缝干涉图样');
xlabel('位置 (m)');
ylabel('位置 (m)');
```
解释:
- `lambda`:光的波长。
- `d`:双缝间距。
- `D`:屏幕到双缝距离。
- `a`:缝宽。
- `L`:屏幕大小。
- `N`:屏幕像素数。
- `x`:屏幕上的位置向量。
- `X` 和 `Y`:屏幕上的位置网格。
- `r1` 和 `r2`:屏幕上每个像素到两个缝的距离。
- `I`:每个像素的干涉强度。
- `imagesc`:用灰度图显示干涉图样。
你可以根据需要修改参数,运行代码即可得到杨氏双缝干涉的图样。
杨氏双缝干涉实验matlab
杨氏双缝干涉实验是一种经典的光学实验,可以通过MATLAB进行模拟。下面是一个MATLAB程序的示例,用于模拟杨氏双缝干涉实验并绘制干涉图样和光强分布曲线:
```matlab
% 定义参数
wavelength = 500e-9; % 光的波长
distance = 1; % 双缝到屏幕的距离
slitDistance = 0.1e-3; % 双缝间距
slitWidth = 0.02e-3; % 缝宽
screenWidth = 1; % 屏幕宽度
screenHeight = 0.5; % 屏幕高度
% 计算干涉图样和光强分布曲线
x = linspace(-screenWidth/2, screenWidth/2, 1000);
y = linspace(-screenHeight/2, screenHeight/2, 1000);
[X, Y] = meshgrid(x, y);
r1 = sqrt((X-slitDistance/2).^2 + Y.^2);
r2 = sqrt((X+slitDistance/2).^2 + Y.^2);
intensity = (cos(2*pi*r1/wavelength) + cos(2*pi*r2/wavelength)).^2;
% 绘制干涉图样和光强分布曲线
figure;
subplot(1, 2, 1);
imagesc(x, y, intensity);
colormap('gray');
axis equal tight;
xlabel('x');
ylabel('y');
title('Interference Pattern');
subplot(1, 2, 2);
plot(x, intensity(round(end/2), :));
axis tight;
xlabel('x');
ylabel('Intensity');
title('Intensity Distribution');
% 计算条纹间距和对比度
wavelength = wavelength * 1e9; % 将波长转换为纳米
distance = distance * 1e3; % 将距离转换为毫米
slitDistance = slitDistance * 1e3; % 将双缝间距转换为毫米
stripeSpacing = wavelength * distance / slitDistance; % 条纹间距
contrast = (intensity.max() - intensity.min()) / (intensity.max() + intensity.min()); % 对比度
% 显示结果
disp(['Stripe Spacing: ', num2str(stripeSpacing), ' nm']);
disp(['Contrast: ', num2str(contrast)]);
```
这个MATLAB程序首先定义了一些参数,如光的波长、双缝到屏幕的距离、双缝间距、缝宽和屏幕尺寸。然后,它使用这些参数计算干涉图样和光强分布曲线。最后,程序绘制了干涉图样和光强分布曲线,并计算了条纹间距和对比度。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)