ملف:Drum vibration mode12.gif

من testwiki
اذهب إلى التنقل اذهب إلى البحث
Drum_vibration_mode12.gif (٢٤٩ × ١٧٠ بكسل حجم الملف: ١٤٨ كيلوبايت، نوع MIME: image/gif، ملفوف، ١٩ إطارا، ١٫٩ث)

هذا الملف من ويكيميديا كومنز ويمكن استخدامه بواسطة المشاريع الأخرى. الوصف على صفحة وصف الملف هناك معروض بالأسفل.

ملخص

الوصف
English: Illustration of vibrations of a drum.
التاريخ (UTC)
المصدر عمل شخصي
المؤلف Oleg Alexandrov
إصدارات أخرى
GIF منشأ الملف
InfoField
 هذا الرسم المتجهي أُنشئ بواسطة ماتلاب

ترخيص

Public domain أنا، مالِك حقوق تأليف ونشر هذا العمل، أجعله في النِّطاق العامِّ، يسري هذا في أرجاء العالم كلِّه.
في بعض البلدان، قد يكون هذا التَّرخيص غيرَ مُمكنٍ قانونيَّاً، في هذه الحالة:
أمنح الجميع حق استخدام هذا العمل لأي غرض دون أي شرط ما لم يفرض القانون شروطًا إضافية.

Source code (MATLAB)

function VibratingDrum()

k = 1; % 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

% To save as a GIF comment out the next the 3 lines
%   file=sprintf('Frame%d.png', 1000+iter);
%   fprintf('Saving to %s\n', file)
%   print('-dpng',  '-opengl',  '-r100', file);

  pause(0.01)
end

end

   % converted to gif with the command (run in command shell)
   % convert -antialias -loop 10000 -delay 10  -scale 50% Frame10* Drum_vibration_mode12.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;
end
   
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!')

end

الشروحات

أضف شرحاً من سطر واحد لما يُمثِّله هذا الملف

العناصر المصورة في هذا الملف

يُصوِّر

١٢ يناير 2008

تاريخ الملف

اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.

زمن/تاريخصورة مصغرةالأبعادمستخدمتعليق
حالي٠٤:٥٢، ٣٠ مارس ٢٠٢٣تصغير للنسخة بتاريخ ٠٤:٥٢، ٣٠ مارس ٢٠٢٣٢٤٩ × ١٧٠ (١٤٨ كيلوبايت)wikimediacommons>Dndnrmn1Reverted to version as of 07:10, 12 January 2008 (UTC)

الصفحة التالية تستخدم هذا الملف: