interference.mws
Interference
By Sylvain Muise
<smuise@student.math.uwaterloo.ca>
Introduction
If you drop two stones into a pond, you will see a pattern of interference in the colliding waves resulting from the two stones. The same effect happens when waves from two light sources interact with each other. This Maple application shows what happens when waves of any kind interfere with each other, using animations and pictures. We then take a look at Young's Double Slit Experiment, which examines light waves in particular interfering with each other.
Consider two sine waves. The result of adding of combining these two waves depends on the relative phase difference of the two waves. If the two waves are in phase, i.e. the crests and troughs of one match up with the other, the result of adding them will be another sine wave with twice the amplitude of the original waves, as shown below. This is constructive interference.
>
restart:
with(plots):
with(plottools):
Warning, the name changecoords has been redefined
Warning, the name arrow has been redefined
>
a1:=plot(1.01*sin(t),t=0..4*Pi,y=-2..2,color=blue):
a2:=plot(sin(t),t=0..4*Pi,y=-2..2,color=red):
a3:=plot(sin(t) + sin(t),t=0..4*Pi,y=-2..2,color=magenta):
>
display({a2,a1,a3},title = "sin(t) + sin(t)",axes=none);
If the two waves are out of phase, i.e. the crests of one match up with the troughs of the other, the two lines will essentially cancel each other out, and the result will be 0. This is destructive interference.
>
b1:=plot(sin(t), t=0..4*Pi, y=-1..1, color=blue):
b2:=plot(sin(t + Pi), t=0..4*Pi, y=-1..1, color=red):
b3:=plot(sin(t) + sin(t + Pi), t=0..4*Pi, y=-1..1, color=magenta):
>
display({b1, b2, b3}, title = "sin(t) + sin(t + Pi)", axes=none);
Below is an animation showing the result of adding two sine waves with relative phase difference going from 0 to 2
.
>
c1 := plot(sin(t), t=0..4*Pi, y=-2..2, color=blue):
numFrames := 80:
for i from 1 to numFrames do
c2[i] := plot(sin(t - (i - 1)*2*Pi/numFrames), t=0..4*Pi, y=-2..2, color=red):
c3[i] := plot(sin(t) + sin(t - (i - 1)*2*Pi/numFrames), t=0..4*Pi, y=-2..2, color=magenta):
disp||i := display({c2[i], c3[i]}):
end do:
waveAni := display(disp||(1..numFrames), insequence=true):
>
display({waveAni, c1},axes=none);
>
Young's Double Slit Experiment
>
alpha := Pi * A * sin(theta) / lambda:
beta := Pi * DD * sin(theta) / lambda:
beta2 := Pi * DD2 * sin(theta) / lambda:
f := theta -> I0 * (sin(alpha)/alpha)^2 * (cos(beta))^2:
A := 0.0000085:
DD := 0.00005:
DD2 := 0.00003:
lambda := 1e-06:
I0 := 1:
g := theta -> I0 * (cos(beta2))^2:
interference:=rotate(plot(f(theta), theta=-0.3..0.3,color=magenta),-Pi/2):
diffraction:=rotate(plot((sin(alpha)/alpha)^2,theta=-0.3..0.3, color=blue),-Pi/2):
fringes1 := display({interference,diffraction}):
interference2:=rotate(plot(g(theta),theta=-0.3..0.3,color=magenta),-Pi/2):
rect1 := rectangle([-1.6,0.3],[-1.5,0.14],color=blue):
rect2 := rectangle([-1.6,0.1],[-1.5,-0.1],color=blue):
rect3 := rectangle([-1.6,-0.14],[-1.5,-0.3],color=blue):
rect4 := rectangle([-1.6,0.13],[-1.5,-0.13],color=blue):
rect5 := rectangle([-1.6,1.125],[-1.5,0.7],color=blue):
rect6 := rectangle([-1.6,0.6],[-1.5,-0.6],color=blue):
rect7 := rectangle([-1.6,-0.7],[-1.5,-1.125],color=blue):
text1 := textplot([-0.78,0.25,L]):
text2 := textplot([-1.7,0.025,d]):
text3 := textplot([-1.55,0.12,a]):
text4 := textplot([-1.55,-0.12,a]):
text5 := textplot([0.2, -0.16, P]):
text6 := textplot([-0.5, -0.05, 'q'],font=[SYMBOL]):
text7 := textplot([-1.1,0.28,'d'],font=[SYMBOL]):
text8 := textplot([-0.9,0.28," = d sin"]):
text9 := textplot([-0.65, 0.28, 'q'],font=[SYMBOL]):
text10 := textplot([0.3, 0.065, 'q'], font=[SYMBOL]):
text11 := textplot([0.95, -0.12, 'P']):
text12 := textplot([-1.45, 0.2, 'q'], font=[SYMBOL]):
text13 := textplot([-1.7, 0.4,d]):
arc1 := arc([-0.45,-0.05], 0.05, -Pi/2..Pi/2):
arc2 := arc([0.3,0.065], 0.05, -Pi/2..Pi/2):
arrow1 := arrow([-0.83,0.25], [-1.48,0.25], .2,.03,.1,arrow):
arrow2 := arrow([-0.73, 0.25], [-0.02, 0.25], .2, .03, .1, arrow):
arrow3 := arrow([-1.65, 0],[-1.65,0.1], .2,.1,.1,arrow):
arrow4 := arrow([-1.65, 0],[-1.65,-0.1], .2,.1,.1,arrow):
arrow5 := arrow([-1.5, 0], [0,0],.1,.03, .05,arrow,linestyle=DASH):
arrow6 := arrow([-1.5, 0], [0, -0.16],.1, .03,.05,arrow,linestyle=DASH):
arrow7 := arrow([-1.65,0], [-1.65,0.13], .2,.1,.1,arrow):
arrow8 := arrow([-1.65,0], [-1.65,-0.13], .2,.1,.1,arrow):
arrow9 := arrow([-1.5,0.12],[0.7,0.12],.2, .03,.05,arrow,linestyle=DOT):
arrow10 := arrow([-1.5,0.12],[1,-0.04],.2, .03,.05,arrow,linestyle=DASH):
arrow11 := arrow([-1.5,-0.12],[1,-0.28],.2, .03,.05,arrow,linestyle=DASH):
arrow12 := arrow([-0.138/0.14,0.24],[-1.3,0.26], .1,.02,.2,arrow):
arrow13 := arrow([-1.3,0.26], [-0.138/0.14,0.24], .1, .02, .2, arrow):
arrow14 := arrow([-0.25,-0.08], [1,-0.16], .2,.03,.05,arrow):
arrow15 := arrow([-1.65,0], [-1.65, 0.6], .2,.1,.1,arrow):
arrow16 := arrow([-1.65,0], [-1.65, -0.6], .2,.1,.1,arrow):
line1 := line([0,0.3],[0,-0.3]):
line2 := line([-1.5,0.12],[-1.3,0.26]):
line3 := line([-1.5,-0.12], [-0.138/0.14,0.24]):
line4 := line([0,1.125],[0,-1.125],color=black):
for i from 1 to 6 do
lines[i] := line([-1.7 - i * 0.05,0.25],[-1.7 - i * 0.05, -0.25],color=orange):
end do:
for i from 1 to 6 do
lines2[i] := line([-1.7 - i * 0.05,1.125],[-1.7 - i * 0.05, -1.125],color=orange):
end do:
numCircles := 23:
last := NULL:
for i from 1 to numCircles do
circles1[i] := arc([-1.5,0.65], 0 + i * 0.11, -Pi/2..Pi/2,color=blue):
circles2[i] := arc([-1.5,-0.65], 0 + i * 0.11, -Pi/2..Pi/2,color=red):
last := last, circles1[i], circles2[i]:
di||i := display([last]):
end do:
cirAni := display(di||(1..numCircles),insequence=true):
diffAndInter := {fringes1, rect1, rect2, rect3, text1, text2, text3, text4, text5, text6, arc1, arrow1, arrow2, arrow3, arrow4, arrow5, arrow6, line1, seq(lines[i],i=1..6)}:
inter := {interference2, rect1, rect4, rect3, text1, text2, text5, text6, arc1, arrow1, arrow2, arrow7, arrow8, arrow5, arrow6, line1, seq(lines[i],i=1..6)}:
details := {seq(lines[i], i=1..6), text2, arrow3, arrow4, text3, text4, text7, text8, text9, text10, text11, text12, arc2, rect1, rect2, rect3, arrow9, arrow10, arrow11, arrow12, arrow13, arrow14, line2, line3}:
waves := {seq(lines2[i], i=1..6), text13, arrow15, arrow16, rect5, rect6, rect7, line4, cirAni}:
In 1801, Thomas Young conducted this experiment which showed that light behaved like a wave, just like water. He sent a plane wave (a wave made up of parallel wave fronts all travelling in the same direction) through two thin slits separated by a distance d, creating two seperate light sources that could intefere with each other. This is shown in the following animation.
>
display(waves, view=[-2..1,-1.125..1.125], axes=none);
Young then observed the interference pattern on a screen a distance L away from the slits. He observed a series of bright and dark fringes. Wherever the two waves from the two sources interfered constructively, there was a bright fringe, and wherever they interfered destructively, there was a dark fringe.
>
display(inter, axes=none);
The relative phase difference between the two waves can be found by determining the path difference, or how much farther one wave had to travel than the other wave to get to a point on a screen at an angle theta. Since d is much less than L, we can assume that the two waves are parallel. At small angles, the path difference,
, can be approximated to d sin
. Bright fringes are found at points where
= m
(m = 1, 2, ....) and the dark fringes are found at points where
= (m + 1/2)
, (m = 0, 1, 2, ...).
>
display(details, axes=none);
If the width of the slits, a, is greater than
, the wavelength of the light, the interference fringes oscillate in brightness, and this is due to diffraction. Diffraction is interference of one wave with another. The interference and diffraction patterns are shown in the following two graphs.
>
plot((cos(beta))^2, theta=-0.3..0.3,color=red);
plot((sin(alpha)/(alpha))^2, theta=-0.3..0.3,color=blue);
The following graph shows the result of both the interference and diffraction patterns on the brightness fringes.
>
plot(f(theta), theta=-0.3..0.3, color=magenta);
The whole picture.
>
display(diffAndInter, axes=none);
>