電荷在電場中的運動作業(HW_charge.py)

這個習題希望同學們能夠利用我們在電學和運動模擬中所學到的經驗,來設計並體驗拉塞福在1909年非常著名的散射實驗,這個實驗被譽稱為20世紀最偉大物理實驗。

拉塞福散射(維基百科)



拉塞福散射實驗的模擬(HW06-2.py)




HW_charge.py 以下的參考程式,同學們只需要修改紅色部分就可完成作業。
GlowScript 3.0 VPython
def EF_point(q,rq,r):
    ke=1.
    rrq=r-rq
    rrq0=mag(rrq)
    E=ke*q*rrq/rrq0**3
    return E    
q=79; rq=vec(0,0,0)
scene = display(width=1000, height=700, center=vec(0, 0, 0))
Xaxis=arrow(pos=vec(-4,0,0),axis=vec(8,0,0),shaftwidth=0.01, headwidth=0.02)
Yaxis=arrow(pos=vec(0,-1,0),axis=vec(0,2,0),shaftwidth=0.01)
charge = sphere(pos=rq, radius=0.05, color=color.red)
Na=21; qa=2.; ma=4.; xa=-2; va=60; Ly=0.2; Ly2=Ly/2; dy=Ly/Na
qc=[qa for i in range(Na)]
es = [sphere(pos=vec(-2,-Ly2+dy*i,0), radius=0.03, color=vec(0.5+0.5*random(),0.5+0.5*random(),0.5+0.5*random()), 
    make_trail=True) for i in range(Na)]
for i in range(Na):
    es[i].v=vec(va,0,0)
t=0.; dt=0.0002; NR=int(1/dt)
labva='va={:04.1f}'.format(va)
label(text=labva,pos=vector(-2,2,0))
print_options(width=1000, height=100)
print('q=',q,'  rq=',rq,'  Na=',Na,'  qa=',qa,'  ma=',ma,'  xa=',xa,'  va=',va,'  Ly=',Ly)
scene.waitfor('click')
while t < 10:
    rate(NR/40)
    for i in range(Na):
        if(mag(es[i].pos) > 2.2): break
        E=EF_point(q,rq,es[i].pos)
        #es[i].v+=  
        es[i].pos+=rs[i].v*dt
    t+=dt