想当爷爷的孙子 2020-05-05 15:24 采纳率: 66.7%
浏览 304
已采纳

洛伦兹公式的数值实验,用python的jupyterbook写

python
洛伦兹公式中。

(1)只有均匀磁场情况下,粒子运动轨迹。

(2)均匀电场和磁场(二者相互垂直),粒子运动轨迹。

电场,电荷分布,初始条件等等自己定。

比如每隔0.01秒,算一次加速度,一次速度,一次坐标,计算10秒的吧
(**能明显看出粒子运动轨迹的形状**)图片说明

看不懂问题可以问问,希望帮忙写写代码,我还不会自己写代码。

  • 写回答

2条回答 默认 最新

  • 吃鸡王者 2020-05-06 14:34
    关注
    import  numpy as np
    from matplotlib import pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    
    p0=np.array([0,0,0]) # 初始位置 m 
    v0=np.array([1,0,1])  #初速度    m/s
    m=1   #  粒子质量   kg
    e=np.array([0,1,0]) # 电场强度 N/c
    b=np.array([0,0,3])  # 磁感应强度 T
    q=1                 # 电荷量  C
    ts=0.01         # 步长 s
    t=10       #      总的模拟时间  s
    
    
    #  匀强电场和磁场  所以加速度和位置无关
    def step(p0,v0,e,b,q):
        global ts
    
        f=e*q+q*(np.cross(v0,b))
        a=f/m
        p=p0+v0*ts+a*ts**2/2
        v=v0+a*ts
    
        return  p,v
    
    
    res1=[]
    res1.append(p0.tolist())
    res2=[]
    res2.append(p0.tolist())
    
    p,v=p0,v0
    for i in  range(int(t/ts)):
        p,v=step(p,v,0,b,q)
        res1.append(p.tolist())
    
    res1=np.array(res1) 
    
    fig=plt.figure()
    ax1 = fig.add_subplot(121,projection='3d')
    ax1.scatter3D(res1[:,0],res1[:,1],res1[:,2])
    ax1.set_xlabel('x')
    ax1.set_ylabel('y')
    ax1.set_zlabel('z')
    ax1.set_title('1')
    
    p,v=p0,v0
    for i in  range(int(t/ts)):
        p,v=step(p,v,e,b,q)
        res2.append(p.tolist())
    res2=np.array(res2)
    ax2 = fig.add_subplot(122,projection='3d')
    ax2.scatter3D(res2[:,0],res2[:,1],res2[:,2])
    ax2.set_xlabel('x')
    ax2.set_ylabel('y')
    ax2.set_zlabel('z')
    ax2.set_title('2')
    plt.show()
    
    

    因为近视将每步长之间看成匀变速运动,所以模拟结果和理论结果又一定的偏差,但这是使用步长这种方法不可避免的,希望代码能帮助到你。
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 keepalive配置业务服务双机单活的方法。业务服务一定是要双机单活的方式
  • ¥50 关于多次提交POST数据后,无法获取到POST数据参数的问题
  • ¥15 win10,这种情况怎么办
  • ¥15 如何在配置使用Prettier的VSCode中通过Better Align插件来对齐等式?(相关搜索:格式化)
  • ¥100 在连接内网VPN时,如何同时保持互联网连接
  • ¥15 MATLAB中使用parfor,矩阵Removal的有效索引在parfor循环中受限制
  • ¥20 Win 10 LTSC 1809版本如何无损提升到20H1版本
  • ¥50 win10 LTSC 虚拟键盘不弹出
  • ¥30 微信小程序请求失败,网页能正常带锁访问
  • ¥15 Matlab求解微分方程,如何用fish2d进行预优?