حرکت ذره باردار در میدانهای الکتریکی و مغناطیسی
فرض کنید که در یک دستگاه مرجع نیروهای الکتریکی و مغناطیسی بر ذره باردار وارد می شوند. تحت چنین شرایط معادله لورنتس حرکت ذره را توصیف می کند :
|
که در آن 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))];