Image:Drum vibration mode21.gif

From Wikipedia, the free encyclopedia

Wikimedia Commons logo 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.
Description

Illustration of vibrations of a drum.

Source

self-made with MATLAB

Date

06:21, 12 January 2008 (UTC)

Author

Oleg Alexandrov

Permission
(Reusing this image)

see below



Public domain I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.


Afrikaans | Alemannisch | Aragonés | العربية | Asturianu | Български | Català | Česky | Cymraeg | Dansk | Deutsch | Eʋegbe | Ελληνικά | English | Español | Esperanto | Euskara | Estremeñu | فارسی | Français | Galego | 한국어 | हिन्दी | Hrvatski | Ido | Bahasa Indonesia | Íslenska | Italiano | עברית | Kurdî / كوردی | Latina | Lietuvių | Latviešu | Magyar | Македонски | Bahasa Melayu | Nederlands | ‪Norsk (bokmål)‬ | ‪Norsk (nynorsk)‬ | 日本語 | Polski | Português | Ripoarisch | Română | Русский | Shqip | Slovenčina | Slovenščina | Српски / Srpski | Svenska | ไทย | Tagalog | Türkçe | Українська | Tiếng Việt | Walon | ‪中文(简体)‬ | ‪中文(繁體)‬ | zh-yue-hant | +/-

[edit] Source code (MATLAB)

function main()
 
   k = 2; % k-th asimuthal number and bessel function
   p = 1; % 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);
   X=R.*cos(Theta);
   Y=R.*sin(Theta);
 
   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);
 
      pause(0.1);
   end
 
   % converted to gif with the command 
   % convert -antialias -loop 10000 -delay 10  -scale 50% Frame10* Drum_vibration_mode21.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);
 
   r=(a+b)/2;
 
function [a, b] = find_nthroot(X, Y, n)
 
   l=0;
 
   m=length(X);
   for i=1:(m-1)
      if ( Y(i) >= 0  & Y(i+1) <= 0 ) | ( Y(i) <= 0  & Y(i+1) >= 0 )
         l=l+1;
      end
 
      if l==n
         a=X(i); b=X(i+1);
 
         %disp(sprintf('Error in finding the root %0.9g', b-a));
         return;
      end
   end
 
   disp('Root not found!');

File history

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

Date/TimeDimensionsUserComment
current04:46, 16 January 2008248×130 (230 KB)Oleg Alexandrov (Strip caption, looks better like this)
06:33, 12 January 2008250×168 (239 KB)Oleg Alexandrov ({{Information |Description=Illustration of vibrations of a drum. |Source=self-made with MATLAB |Date=06:21, 12 January 2008 (UTC) |Author= Oleg Alexandrov |Permission= |other_versions= }} {{PD-self)
The following pages on the English Wikipedia link to this file (pages on other projects are not listed):