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);