在MATLAB中计算粒子在磁场中的磁矩

时间:2018-06-24 22:54:11

标签: matlab physics

问题如下: 我在磁场中有一个粒子,该粒子在所有轴上都有分量,并且与所有坐标有关

B =(B_x(x,y,z),B_y(x,y,z),B_z(x,y,z))

我求解了运动方程,发现了粒子在每个时间步的位置(x,y,z)和速度(v_x,v_y,v_z)。 我要计算的是粒子的能量和磁矩,以显示每个粒子的守恒。

找到能量很简单

E = m / 2 *(v_x。^ 2 + v_y。^ 2 + v_z。^ 2)

,我得到了预期的结果(保护)。但是,我在计算磁矩时很费力。

mu = m * v_perp。^ 2 ./(2 * B_mag)

其中,v_perp是垂直于磁场的速度部分,B_mag是磁场的大小(B_mag = sqrt(B_x。^ 2 + B_y。^ 2 + B_z。^ 2))。我的问题是执行v_perp。我知道如何进行解析计算,但是我很难在数值上进行计算。我很乐意为此提供一些帮助。

提前谢谢

1 个答案:

答案 0 :(得分:0)

瞬时速度及其垂直于磁场的分量的解析公式仍应适用。 (除非我对您的问题有误解。)

在每个时间步上应用以下方程式。

B = [B_x; B_y; B_z]; % magnetic field at particle's position
v = [v_x; v_y; v_z]; % particle's instantaneous velocity

v_prll = (B/norm(B)^2)*dot(v,B); % velocity vector parallel to magnetic field
v_perp = v - v_prll; % velocity vector perpendicular to magnetic field