微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 ODE 绘制带有 scipy.integrate.solve_ivp 的粒子运动

如何解决使用 ODE 绘制带有 scipy.integrate.solve_ivp 的粒子运动

我的问题:

一个带正电的粒子(质量 = 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,w,?])

s = solve_ivp(ivf,times,initialZ)

我的问题

what should the question marks (?) in the code be replaced with?

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

解决方法

让我们设置 ode,然后设置初始条件。根据磁力方程和牛顿第二定律,a = (q B / m) v * z。我使用 * 表示叉积,xyz 是单位向量。在你的问题中,你没有给出粒子的电荷 q,我假设你正在做一个质子,只是将质量四舍五入 1.67 到 2。你会看到我们只需要 4 个方程和 4 个初始条件作为这个问题本质上是二维的。

我们有a = (q B / m) (v_y x - v_x y)。请注意,没有 z 术语!我们需要将这 2 个二阶 ode 写成四个一阶 ode,以便 ode 求解器可以解决它。我们知道a = dv/dt。

  1. dv_x / dt = (q B / m) v_y
  2. dv_y / dt = -(q B / m) v_x
  3. dx/dt = v_x
  4. dy/dt = v_y

初始条件是速度为 v_x0 = Sqrt(2 E / m),其中 E 为 2 MeV,v_y0 = 0,让粒子从原点开始,所以 x0 = y0 = 0。>

import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt

# make sure everything is SI
q = 1.602176634E-19 # charge assuming it is a proton
B = 4 # magnetic field magnitude
m = 2E-27 # mass
E =  2 * 1.60218E-13 # kinetic energy in joules
C = q * B / m # constant for convenience
v0x = np.sqrt(2 * E / m)

initialZ = [0,v0x,0] # = [positionX,positionY,velocityX,velocityY]

def ivf(t,Z) :
# Z[2] is vx,Z[3] is vy
    dxdt = Z[2]
    dydt = Z[3]
    dvxdt = C * Z[3]
    dvydt = -C * Z[2]
    return [dxdt,dydt,dvxdt,dvydt]

sol = solve_ivp(ivf,[0,1E-6],initialZ,method='Radau') # 1 microsecond = 1*10^6 seconds

plt.plot(sol.y[0],sol.y[1])
plt.xlabel('x')
plt.ylabel('y')
plt.title('Displacement on point particle')
plt.show()

我期待的是像回旋加速器一样的圆周运动。这是我制作的粗略图表,

enter image description here

通过使用积分方法,我能够让它变得更流畅。我相信您将能够修补和玩弄不同的东西,直到获得满意的结果。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。