Cartoons of the relationship between group and phase velocities
Matlab code
% Cartoons of group and phase velocities in a Gaussian packet
clear; close all;
prompt = 'Group faster than phase velocity [g], phase faster than group [p], or equal [e]?:';
str = input(prompt,'s');
if (str == 'g') || (str == 'G')
vid = VideoWriter('groupVelocityFast.mp4','MPEG-4');
elseif (str == 'p') || (str == 'P')
vid = VideoWriter('phaseVelocityFast.mp4','MPEG-4');
elseif (str == 'e') || (str == 'E')
vid = VideoWriter('groupPhaseVelocityEqual.mp4','MPEG-4');
end
vid.Quality = 100;
vid.FrameRate = 60;
open(vid);
set(0,'defaultfigurecolor',[1 1 1]);
set(gca,'linewidth',7);
for i = 0:pi/20:40*pi
hold off;
% Sinusoidal wave packet
t = 0:pi/500:40*pi;
if (str == 'g') || (str == 'G')
Y = sin(2*(i-1.12*t)).*exp(-(i-t).^2/50);
elseif (str == 'p') || (str == 'P')
Y = sin(2*(i-0.88*t)).*exp(-(i-t).^2/50);
elseif (str == 'e') || (str == 'E')
Y = sin(2*(i-t)).*exp(-(i-t).^2/50);
end
plot(t,Y, 'color',[1,0,0], 'LineWidth', 2.0)
hold on;
% Positive Gaussian envelope
Y = exp(-(i-t).^2/50);
plot(t,Y, 'color',[0.25,0.28,0.55], 'LineWidth', 2.0)
% Negative Gaussian envelope
Y = -exp(-(i-t).^2/50);
plot(t,Y, 'color',[0.25,0.28,0.55], 'LineWidth', 2.0)
axis square
xlim([17.5 100]);
ylim([-1.1 1.1]);
axis off
% Store the frame
frame = getframe(gcf);
writeVideo(vid,frame);
end
hold off;
% Output the movie as an mpg file
close(vid);