多缝的夫琅和费衍射,使用扩展光源照明,前后、上下移动光源,观察衍射图样的变化。
时间: 2023-10-20 07:05:21 浏览: 125
光的多缝衍射
好的,下面是使用扩展光源照明观察多缝夫琅和费衍射图样变化的 MATLAB 代码和解释。
```
% 定义常数
lambda = 632.8e-9; % 波长
d = 20e-6; % 缝宽
D = 100e-6; % 缝间距
N = 400; % 屏幕像素数
L = 1; % 离屏幕距离
% 定义坐标系
x = linspace(-0.01, 0.01, N); % x轴坐标
y = linspace(-0.01, 0.01, N); % y轴坐标
[X, Y] = meshgrid(x, y);
r = sqrt(X.^2 + Y.^2); % 极径
theta = atan2(Y, X); % 极角
% 定义扩展光源
sigma = 0.01; % 光源大小
u = exp(-r.^2 / (2 * sigma^2)) .* exp(-1i * pi * (X + Y)); % 光源复振幅分布
% 循环移动光源
for dx = linspace(-0.01, 0.01, 50)
for dy = linspace(-0.01, 0.01, 50)
% 计算衍射光强度
U = zeros(size(X));
for m = -2:2
for n = -2:2
phi = k * (m * D * sin(theta) + n * d * sin(theta)) - k * (dx * m + dy * n);
U = U + exp(1i * phi);
end
end
I = abs(U).^2;
% 绘制图形
imagesc(x, y, I);
colormap(hot);
axis equal tight;
xlabel('x (m)');
ylabel('y (m)');
title(sprintf('Multiple-Slit Fraunhofer Diffraction (dx = %.3f, dy = %.3f)', dx, dy));
drawnow;
end
end
```
这段代码中,首先定义了一些常数,包括波长、缝宽、缝间距、屏幕像素数和离屏幕距离。然后定义了坐标系,生成了一个网格,计算了每个像素点的极径和极角。接着定义了一个扩展光源,通过调整 `sigma` 参数可以控制光源的大小。在循环中移动光源,计算每个位置的衍射光强度并绘制图形,通过调整循环的参数可以控制光源的上下、前后移动。
在计算衍射光强度时,使用了双重循环计算了每个像素点的相位差,并将所有缝的贡献相加。在绘制图形时,使用了 `drawnow` 函数实时刷新图像,使得可以观察到光源移动时衍射图样的变化。
运行代码,就可以观察到多缝夫琅和费衍射图样随着光源位置的变化而变化的情况。可以尝试调整光源大小、缝宽、缝间距等参数,观察衍射图样的变化。
阅读全文