File:Drum vibration mode02.gif

From Wikiversity
Jump to navigation Jump to search

Drum_vibration_mode02.gif(248 × 130 pixels, file size: 191 KB, MIME type: image/gif, looped, 19 frames, 1.9 s)

Commons-logo.svg This is a file from the Wikimedia Commons. The description on its description page there is shown below.

Commons is a freely licensed media file repository. You can help.


Illustration of vibrations of a drum.

Date (UTC)
Source self-made with MATLAB
Author Oleg Alexandrov
Other versions

Derivative works of this file: Membrane-normal-modes.gif

Matlab Logo.png
This diagram was created with MATLAB.
Public domain 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)

function main()

   k = 0; % k-th asimuthal number and bessel function
   p = 2; % p-th bessel root

   q=find_pth_bessel_root(k, p); 

   N=20; % used for plotting

   % Get a grid
   R1=linspace(0.0, 1.0, N); 
   Theta1=linspace(0.0, 2*pi, N);
   [R, Theta]=meshgrid(R1, Theta1);

   T=linspace(0.0, 2*pi/q, N); T=T(1:(N-1));

   for iter=1:length(T);
      t = T(iter);
      Z=sin(q*t)*besselj(k, q*R).*cos(k*Theta);

      figure(1); clf; 
      surf(X, Y, Z);
      caxis([-1, 1]);
      shading faceted;
      colormap autumn;

      % viewing angle
      view(108, 42);
      axis([-1, 1, -1, 1, -1, 1]);
      axis off;

      H=text(0, -0.3, 1.4, sprintf('(%d, %d) mode', k, p), 'fontsize', 25);

      file=sprintf('Frame%d.png', 1000+iter);
      disp(sprintf('Saving to %s', file));
      print('-dpng',  '-zbuffer',  '-r100', file);


   % converted to gif with the command 
   % convert -antialias -loop 10000 -delay 10  -scale 50% Frame10* Drum_vibration_mode02.gif

function r = find_pth_bessel_root(k, p)

   % a dummy way of finding the root, just get a small interval where the root is
   X=0.5:0.5:(10*p+1); Y = besselj(k, X);
   [a, b] = find_nthroot(X, Y, p);

   X=a:0.01:b; Y = besselj(k, X);
   [a, b] = find_nthroot(X, Y, 1);

   X=a:0.0001:b; Y = besselj(k, X);
   [a, b] = find_nthroot(X, Y, 1);

function [a, b] = find_nthroot(X, Y, n)


   for i=1:(m-1)
      if ( Y(i) >= 0  & Y(i+1) <= 0 ) | ( Y(i) <= 0  & Y(i+1) >= 0 )

      if l==n
	 a=X(i); b=X(i+1);

	 %disp(sprintf('Error in finding the root %0.9g', b-a));

   disp('Root not found!');

File history

Click on a date/time to view the file as it appeared at that time.

current04:44, 16 January 2008Thumbnail for version as of 04:44, 16 January 2008248 × 130 (191 KB)Oleg AlexandrovStrip caption, looks better like this
06:25, 12 January 2008Thumbnail for version as of 06:25, 12 January 2008252 × 169 (200 KB)Oleg Alexandrov
06:21, 12 January 2008Thumbnail for version as of 06:21, 12 January 2008253 × 194 (202 KB)Oleg Alexandrov{{Information |Description=Illustration of vibrations of a drum. |Source=self-made with MATLAB |Date=~~~~~ |Author= Oleg Alexandrov |Permission= |other_versions= }} {{PD-self}} ==Source code ([[:

Global file usage

The following other wikis use this file: