Vaizdas:Drum vibration mode02.gif

Iš testwiki.
Pereiti į navigaciją Jump to search
Drum_vibration_mode02.gif (252 × 169 taškų, rinkmenos dydis: 200 KiB, MIME tipas: image/gif, ciklinis, 19 kadrų, 1,9 s)

Ši rinkmena yra iš Vikiteka ir gali būti naudojama kituose projektuose. Informacija iš failo aprašymo puslapio yra pateikiama žemiau.

Aprašymas

{{Information

|Description=

English: Illustration of vibrations of a drum.

|Source=Mano darbas |Date=2008-01-12 06:21 (UTC) |Author= Oleg Alexandrov |Permission= |other_versions=Derivative works of this file:  Membrane-normal-modes.gif

|other fields = GIF genesis

InfoField
 Šis GIF paveikslėlis sukurtas su MATLAB.
Public domain Aš, šio darbo autorinių teisių savininkas, šį darbą skelbiu viešo naudojimo. Tai galioja visame pasaulyje.
Kai kuriose šalyse tai negali būti legaliai leidžiama; jei taip:
Suteikiu teisę naudoti šį darbą bet kokiai paskirčiai, be jokių sąlygų, nebent jos reikalaujamos įstatymų.

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

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

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

vaizduoja

12 sausio 2008

media type anglų

image/gif

Rinkmenos istorija

Paspauskite ant datos/laiko, kad pamatytumėte rinkmeną tokią, kokia ji buvo tuo metu.

Data/LaikasMiniatiūraMatmenysNaudotojasPaaiškinimas
dabartinis12:12, 18 kovo 2023Versijos 12:12, 18 kovo 2023 miniatiūra252 × 169 (200 KiB)wikimediacommons>Dndnrmn1Reverted to version as of 06:25, 12 January 2008 (UTC)

Rinkmena nėra naudojama jokiame puslapyje.