Two_dim_standing_wave.gif
Description Two dim standing wave.gif | Illustration of a standing wave in a cavity resonator . Mathematically, this also represents a vibration mode of a rectangular drum or membrane . |
Date | (UTC) |
Source | self-made with MATLAB |
Author | Oleg Alexandrov |
This diagram was created with
MATLAB
.
Public domain Public domain false false |
I, the copyright holder of this work, release this work into the
public domain
. This applies worldwide.
In some countries this may not be legally possible; if so: I grant anyone the right to use this work for any purpose , without any conditions, unless such conditions are required by law. |
Source code ( MATLAB )
% illustration of a standing wave in two dimensions
% box size
Lx = 3;
Ly = 4;
h= 0.1; % grid size
[X, Y] = meshgrid(0:h:Lx, 0:h:Ly);
numP_x = 2; numP_y = 3; % number of peaks in x and y
Z=0.5*sin(2*pi*numP_x*X/Lx).*sin(2*pi*numP_y*Y/Ly);
% normalize from 0 to scale
scale = 0.5;
%Z = Z - min(min(Z));
%Z = Z/max(max(Z));
M=11;
T=linspace(0.0, 2*pi, M); T=T(1:(M-1)); T = T + 0.5*pi/(M-1);
shift = 1;
for p=1:1
for iter=1:length(T)
%figure(1); clf; hold on;
t = T(iter);
figure(1); clf; hold on;
surf(X, Y, Z*cos(t));
caxis([-1, 1]);
shading faceted;
colormap autumn;
axis equal; axis off;
axis([0, Lx, 0, Ly, -1, 1]);
% viewing angle
view(38, 42);
%H=text(0, -0.3, 1.4, sprintf('(%d, %d) mode', k, p), 'fontsize', 25);
%image(scale*((Z*sin(t)+shift)));
%axis equal; axis xy;
%axis off;
file=sprintf('Frame%d.png', 1000+iter);
disp(sprintf('Saving to %s', file));
print('-dpng', '-zbuffer', '-r100', file);
pause(0.2);
end
end
% saved to gif with the command
% convert -density 100 -loop 1000 -delay 20 Frame1* Two_dim_standing_wave.gif
% then cropped and scaled in Gimp.