使用 ODE 通过 scipy.integrate.solve_ivp 绘制粒子运动

计算科学 Python scipy 麻木的 电磁学
2021-12-03 04:15:55

我的问题:

一个带正电的粒子(质量 = 2 * 10 -27 kg)沿 x 轴移动。它在均匀磁场中行进,使得场轴在 z 方向。粒子的能量为 2 MeV,B = 4 T。使用 ODE 求解器绘制 1 微秒内的粒子运动。

我解决问题的尝试

请注意,我在不确定的地方使用了问号。

import numpy as np
from scipy.integrate import solve_ivp

initialZ = [?, ?, ?, ?, ?, ?] # = [positionX, positionY, positionZ, velocityX, velocityY, velocityZ]
t0 = 0
tf = 1*(10**-6) # 1 microsecond = 1*10^6 seconds
times = (t0, tf)

def ivf(t, Z):
  x, y, z = Z[0], Z[1], Z[2]
  u, v, w = Z[3], Z[4], Z[5]
  return np.array([u, v, w, ?, ?, ?])

s = solve_ivp(ivf, times, initialZ)

我的问题

代码中的问号(?)应该用什么替换?

我试图将 ODE 作为初始值问题来解决。我试图通过使洛伦兹力和向心力相等来确定初始速度。我对微分方程很陌生,因此很难知道我是否以正确的方式做事。(请注意,我的 initialZ 向量的前三个值代表位置 x、y 和 z,后三个值代表 x、y 和 z 方向的速度)。我很感激任何帮助或指导。
1个回答

你的粒子是一个圆形的质子(质量m = 2e-27 kg而不是1.672e-27 kg)。运动方程是

x˙=v,   mv˙=qv×B,
在哪里B=(0,0,Bz)Bz=4T=4N/(mA)q=1e=1.602·1019C,C=As

然后这给出了加速度

m=2e-27
e_charge = 1.6e-19
q=+1*e_charge
Bz = 4

ax = q/m*vy*Bz; ay = -q/m*vx*Bz; az = 0

对于初始条件,如果没有场,粒子将沿着x恒速轴vx,vy=vz=0. 由于系统是平移不变的,因此将位置设置为时间原点t=0. 然后通过动能公式给出速度

12mvx2=E=2MeVvx=4MeVm
要么

vx = 2e+3*sqrt(e_charge/m)