Young’s two-slits experiment
Matlab code
% Program to plot the interference between two point oscillators as a
% function of their separation. The time-averaged far-field intensity is
% plotted on the right.
clear all; close all;
vid = VideoWriter('interference.mp4','MPEG-4');
vid.Quality = 70;
vid.FrameRate = 30;
vid.VideoCompressionMethod
open(vid);
figure('units','pixels','position',[0 0 1920 1080],'ToolBar','none');
set(0,'defaultfigurecolor',[1 1 1]);
set(gca,'linewidth',10);
myBlue = [0.4 0.44 0.73];
axis square
axis equal
axis off
hold on
lp = [0.2 0.5 0.8]; % Light projection angle
ec = [0.35 0.39 0.64]; % Phil blue
fc = [1.0 0.83 0]; % Gold
alphaVal = 0.82;
set(gca,'View',[0,90]);
%set(gca, 'Projection','perspective');
%light('Position',lp,'Style','infinite');
per = 2*pi; % periodicity
% Limits of real-space volume in Angstroms
xlim([-4*per 35*per]);
ylim([-11*per 11*per]);
zlim([-4.1 4.1]);
% surface mesh grid for propagating circular wave
leftLim = 4;
rightLim = 35;
topBottomLim = 11;
x = -leftLim*per:per/25:rightLim*per;
y = -topBottomLim*per:per/25:topBottomLim*per;
[X,Y] = meshgrid(x,y);
yrange = -topBottomLim:0.01:topBottomLim;
theta = atan(yrange/rightLim);
% electron
[u,v,w] = sphere; % Create sphere coordinates
er = 1.25; % radius of electron
pos1 = [0.0 0.0 0.8 1];
pos2 = [0.82 0.113 0.17 0.774];
% single electron oscillating up and down in centre
for i = 0:2*pi/30:10*pi-2*pi/60
subplot('Position',pos1); % Main plot
newplot
clear surf1
set(gca,'View',[0,90]);
set(gca, 'Projection','perspective');
%light('Position',lp,'Style','infinite');
axis square
axis equal
axis off
xlim([-4*per 35*per]);
ylim([-11*per 11*per]);
zlim([-4.1 4.1]);
hold on
light('Position',lp,'Style','infinite');
F = (0.5*cos((X.^2+(Y).^2).^0.5-i)+0.5*cos((X.^2+(Y).^2).^0.5-i)).^2;
elec1 = surf(u*er,v*er,w*er+2.5*cos(i),'FaceAlpha',1.0, ...
'FaceColor',ec,'LineStyle','none');
surf1 = surf(X,Y,F,'FaceColor',fc,'EdgeColor','none','FaceAlpha',alphaVal);
drawnow;
hold off
subplot('Position',pos2); % intensity plot
ith = (cos(pi*0*sin(theta)).*sinc(pi*sin(theta))).^2;
plot(ith,yrange,'Color',myBlue,'Linewidth',4);
axis tight
axis off
frame = getframe(gcf);
writeVideo(vid,frame);
end
% two electrons moving apart from one another
for i = 0:2*pi/30:16*pi-2*pi/60
subplot('Position',pos1); % Main plot
newplot
clear surf1
set(gca,'View',[0,90]);
set(gca, 'Projection','perspective');
%light('Position',lp,'Style','infinite');
axis square
axis equal
axis off
xlim([-4*per 35*per]);
ylim([-11*per 11*per]);
zlim([-4.1 4.1]);
hold on
light('Position',lp,'Style','infinite');
F = (0.5*cos((X.^2+(Y-i/2).^2).^0.5-i)+0.5*cos((X.^2+(Y+i/2).^2).^0.5-i)).^2;
elec1 = surf(u*er,v*er+i/2,w*er+2.5*cos(i),'FaceAlpha',1.0, ...
'FaceColor',ec,'LineStyle','none');
elec2 = surf(u*er,v*er-i/2,w*er+2.5*cos(i),'FaceAlpha',1.0, ...
'FaceColor',ec,'LineStyle','none');
surf1 = surf(X,Y,F,'FaceColor',fc,'EdgeColor','none','FaceAlpha',alphaVal);
drawnow;
hold off
subplot('Position',pos2); % intensity plot
ith = (cos(pi*(i/(2*pi))*sin(theta)).*sinc(pi*sin(theta))).^2;
plot(ith,yrange,'Color',myBlue,'Linewidth',4);
axis tight
axis off
frame = getframe(gcf);
writeVideo(vid,frame);
end
%Output the movie as an mpg file
close(vid);