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

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

که در آن 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

% این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید

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

% این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید

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 رسم می شود.

مطالب مشابه

عمليات ابتدايي در متلب

تعريف كردن آرايه ها و عمليات جبري روي آنها چهار نو

ذخيره كردن و بازيابي داده ها

در صورتي كه بخواهيد كليه متغيرهاي موجود در محيط كا

شبكه هاي عصبي در Matlab

موضوع کتاب شبکه های عصبینام نویسنده مصطفی کیا

کتاب آموزش شبیه سازی و مدل ساز

  مشخصات: مولف: دکتر نیکوبین (استاد دانشکده مکان

تنظيم خروجيها روي صفحه نمايش ب

اگر مقدار يك متغير را بخواهيد بدانيد مي توانيد آن

ضرب و تقسيم چند جمله ايها

براي ضرب و تقسيم چند جمله ايها مي توانيد توابع dec

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید