آخرين ارسالهاي تالار

خطا: mod_kunenalatest:كيوننا نسخه 1.7 (يا بالاتر) بر روي سيستم شما نصب نيست!
پیغام
  • Kunena is not installed or the installed Kunena version is not supported. The plug-in has now been disabled. Please install/upgrade Kunena to version 1.7 for the Kunena Discuss Plug-in to function properly.
حرکت ذره باردار در میدانهای الکتریکی و مغناطیسی مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط saeed   
یکشنبه, 08 فروردین 1389 ساعت 00:10

حرکت ذره باردار در میدانهای الکتریکی و مغناطیسی

فرض کنید که در یک دستگاه مرجع نیروهای الکتریکی و مغناطیسی بر ذره باردار وارد می شوند. تحت چنین شرایط معادله لورنتس حرکت ذره را توصیف می کند :

که در آن m جرم ذره، q بار ذره است. v ، E و B بترتیب سرعت ذره ، نیروی الکتریکی و میدان مغناطیسی را نمایش می دهند و هر سه کمیتهای برداری هستند.

این یک معادله در فضای سه بعدی است. یک روش این است که این معادله را بصورت مولفه ای در هر بعد جداگانه حل نماییم. در این صورت سه معادله دیفرانسیل مرتبه دو خواهیم داشت و از آنجاییکه در روشهای اویلر و رانگ کوتا هر معادله دیفرانسیل مرتبه دو به دو معادله دیفرانسیل مرتبه یک شکافته می شود در مجموع 6 مولفه دیفرانسیل مرتبه یک خواهیم داشت. در مورد روش رانگ کوتا چنین شیوه­ای واقعا طولانی و خسته کننده است. خوشبختانه در متلب اجباری به برگزیدن این شیوه نداریم و می توانیم مسئله را با استفاده از ماتریسها به همان شکل برداری حل نماییم. هم برنامه کوتاهتر خواهد شد و هم زمان اجرای آن.

کمیتهای برداری در معادله را با استفاده از ماتریسهای سطری یا ستونی می توان تعریف نمود. برای ضرب برداری سرعت v و میدان مغناطیسی B می توانیم از تابع cross استفاده کنیم. اطلاعات مربوط به هر کدام از بردارهای r و v در پایان هر تکرار در ماتریس n×3 ذخیره می شود.  N نشاندهنده تعداد سطرهاست بطوریکه هر سطر متناظر با یک زمان خاص است. ستونهای اول و دوم و سوم ماتریس r بترتیب نشاندهنده مختصات x ، y و z ذره میباشند همان چیزی که نهایتا با استفاده از plot3 مسیر حرکت را نمایش می دهند.

با این توضیحات معادله دیفرانسیل برداری لورنتس را به دو معادله دیفرانسیل برداری مرتبه یک تبدیل می کنیم.

 

برنامه را می توانیم برای مواردی که حل تحلیلی را می دانیم تست کنیم. مواردی از این دست در جدول زیر خلاصه شده اند.

E

B

V0

مسیر حرکت در فضا

[0 0 0]

[0 0 1]

[1 1 0]

دایره ای در صفه xy

[0 0 0]

[0 0 1]

[1 1 1]

مارپیچ حول محور z

[1 0 0]

[0 0 1]

[1 1 0]

ترکیب حرکت دایره ای در صفحه xy و حرکت خطی در جهت x (حرکت چرخزاد)

[1 0 0]

[0 0 1]

[1 1 1]

ترکیب حرکت مارپیچی حول محور z و حرکت خطی در جهت x

 

تابع ch_motion مسیر حرکت ذره باردار را با بکارگیری روش رانگ کوتا رسم می کند. آرگومان اول سرعت ذره، آرگومان دوم میدان الکتریکی و ارگومان سوم میدان مغناطیسی را مشخص می کند. هر سه آرگومان ماتریس های سطری 1×3 می باشند، به عنوان مثال میتوانید آنها را از جدول بالا انتخاب کنید و نتایج پیشبینی شده در جدول را مشاهده نمایید.

برای مثال در صفحه command عبارت زیر را تایپ و اینتر کنید.

ch_motion([1 1 1],[0 0 0],[0 0 1])

در اینصورت مطابق جدول مسیر حرکت مارپیچی حول محور z خواهد بود.

 

 

function ch_motion(v0,E,B)

% charged particle motion - rung-kutta method

% آدرس ایمیل جهت جلوگیری از رباتهای هرزنامه محافظت شده اند، جهت مشاهده آنها شما نیاز به فعال ساختن جاوا اسکریپت دارید

close all

%-----------------

q=1;

m=1;

N=500;

t=linspace(0,20,N); % time between 0-5s

h=t(2)-t(1);   % time step

f=@(v) v;      % f=dr/dt

g=@(v) q/m*(E+cross(v,B)); % g=dv/dt

r(1,:)=[0 0 0];   % initial position

v(1,:)=v0;          % initial speed

for i=1:N-1

k1= f(v(i,:));

kp1= g(v(i,:));

k2=f(v(i,:)+h/2*kp1);

kp2=g(v(i,:)+h/2*kp1);

k3=f(v(i,:)+h/2*kp2);

kp3=g(v(i,:)+h/2*kp2);

k4=f(v(i,:)+h*kp2);

kp4=g(v(i,:)+h*kp2);

r(i+1,:)=r(i,:)+h/6*(k1+2*k2+2*k3+k4);

v(i+1,:)=v(i,:)+h/6*(kp1+2*kp2+2*kp3+kp4);

end

x=r(:,1);

y=r(:,2);

z=r(:,3);

a1=min(x)-eps;a2=max(x)+eps;

b1=min(y)-eps;b2=max(y)+eps;

c1=min(z)-eps;c2=max(z)+eps;

h=plot3(x(1),y(1),z(1),'Marker','o');

axis([a1 a2 b1 b2 c1 c2])

for i=2:N

set(h,'XData',x(i),'YData',y(i),'Zdata',z(i))

drawnow

end

hold on

plot3(x,y,z,'o')

 

تابع chargedparticle_ode مسیر حرکت ذره را با استفاده از ode45 رسم می کند. این تابع آرگومان ورودی ندارد و مقادیر اولیه سرعت و همچنین میدانها باید درون برنامه مشخص شوند. در این مورد مقادیر مربوط به حرکت چرخزاد در صفحه xy هستند.

function chargedparticle_ode

% charged particle motion - rung-kutta method

% آدرس ایمیل جهت جلوگیری از رباتهای هرزنامه محافظت شده اند، جهت مشاهده آنها شما نیاز به فعال ساختن جاوا اسکریپت دارید

close all

%-----------------

N=500;

t=linspace(0,20,N); % time between 0-5s

r0=[0 0 0];         % initial position vector

v0=[1 1 0];         % initial velocity vector

[T r]=ode45(@ch_equation,t,[r0,v0]);

x=r(:,1);

y=r(:,2);

z=r(:,3);

a1=min(x)-eps;a2=max(x)+eps;

b1=min(y)-eps;b2=max(y)+eps;

c1=min(z)-eps;c2=max(z)+eps;

h=plot3(x(1),y(1),z(1),'Marker','o');

axis([a1 a2 b1 b2 c1 c2])

for i=2:N

set(h,'XData',x(i),'YData',y(i),'Zdata',z(i))

drawnow

end

hold on

plot3(x,y,z,'o')

 

function dr=ch_equation(t,rv)

E=[1 0 0]';

B=[0 0 1]';

q=1;

m=1;

dr=[rv(4:6);q/m*(E+cross(rv(4:6),B))];

 

با اجرای تابع chargedparticle_ode منحنی چرخزاد در صفحه xy رسم می شود.

نظر ها (4)
  • roozbeh  - merssi
    ye soal daram ,javab bedid mamnun misham, age
    meydane meghnatisy be moalefe z vabaste bashe ,B=B(z),un vaght barname che taghiri mikone
    .age lotf konid va begid mamnun misham.
    az zahmate shoma ghadrdani mikonam
  • saeed
    کار مشکلی نیست. فرض کنید داریم :
    B=2*z^2
    در اینصورت :
    f=@(v) v; % f=dr/dt
    B=@(z) 2*z^2;
    g=@(z,v) q/m*(E+cross(v,B(z))); % g=dv/dt

    در برنامه بجای g(v(i)) از g(v(i),r(i,3)) استفاده نمایید. (z(i)=r(i,3))
  • ناشناس
    :cry: :oops: چیزی که من می خاستم نبود : (
  • نرگس
    تو رو خدا یکی جوابه منو بده دستور randn تو چه بازه ای اعداد تولید میکنه
تنها کاربران عضو شده می توانند نظر ارسال کنند!
آخرین بروز رسانی در پنجشنبه, 04 آذر 1389 ساعت 14:44
 
logo-samandehi