Python 每隔一个时间步更改E和B字段

Python 每隔一个时间步更改E和B字段,python,scipy,physics,particle-system,Python,Scipy,Physics,Particle System,我使用这个“”代码来模拟带电粒子的轨迹(在2D中)。我的问题是,我需要实现一个条件,即电场和磁场切换信号 我没有一个代码可以做任何接近我需要的事情,所以我将尝试用伪代码和我的图像来说明这一点。蓝色的图是x对y,绿色的图是x对dy/dx 基本上,我需要Ex和Bz在每隔一次驼峰后切换标志。只要dy/dx具有相对极值,则满足此条件。因此,如果符号翻转条件与dy/dx有关,我认为这是最佳的 Bx,By,Bz = 0, 0, 4 Ex,Ey,Ez .001, -.01, 0.0000001 t = (

我使用这个“”代码来模拟带电粒子的轨迹(在2D中)。我的问题是,我需要实现一个条件,即电场和磁场切换信号

我没有一个代码可以做任何接近我需要的事情,所以我将尝试用伪代码和我的图像来说明这一点。蓝色的图是x对y,绿色的图是x对dy/dx

基本上,我需要Ex和Bz在每隔一次驼峰后切换标志。只要dy/dx具有相对极值,则满足此条件。因此,如果符号翻转条件与dy/dx有关,我认为这是最佳的

Bx,By,Bz = 0, 0, 4
Ex,Ey,Ez .001,  -.01,  0.0000001
t = (some time, dt)

if hump_number%2==0:
      Bz= -1*Bz
      Ex = -1*Ex
      x,y = lorentz_force_solver(B,E,t0)
else:
      x,y = lorentz_force_solver(B,E,t0)

那么您的问题是什么?您链接的脚本设置为处理常量E和B向量。显然,你想要模拟非常量E和B向量的效果。最明显的选择是将E和B表示为(x)的函数,而不是在solver()中表示为常量。