# 帶電粒子在電場及磁場中的運動 > 作者:王一哲 > 日期:2019/3/29 ## 題目 如下圖所示,在平行於$+y$方向上施加一強度為$E$的均勻電場,另在垂直射出紙面的方向上施加一強度為$B$的均勻磁場。起始時,有一質量為$m$、帶有正電荷$q$的質點,靜止放置在原點處。只受此電磁場的作用下(重力可不計),則在質點的運動過程中,下列敘述何者正確?【96指考單選6】 (A) 任何時刻質點的加速度朝向$+y$方向 (B) 任何時刻磁場對質點不作功 \(C\) 任何時刻電場對質點不作功 (D) 任何時刻磁場對質點的作用力為零 (E) 質點在此電磁場中的運動軌跡為圓形 </br> <img height="50%" width="50%" src="https://imgur.com/ueTu0QX.jpg" style="display: block; margin-left: auto; margin-right: auto;"/> </br> ## 解答 質點會同時受到靜電力及磁力的作用,兩者分別為 $$\mathbf{F_E} = q \mathbf{E} = (0, qE, 0)$$ $$\mathbf{F_B} = q (\mathbf{v} \times \mathbf{B}) \perp \mathbf{v}$$ 1. 質點的加速度方向會隨著速度而改變,當速度為0時磁力為0,只有$+y$方向的靜電力,因此加速度為$+y$方向;當質點有$+y$方向的速度時,就會受到$+x$方向的磁力作用而偏轉,**(A)選項錯誤**。 2. 由於$\mathbf{F_B} \perp \mathbf{v}$,磁力不會對質點作功,**(B)選項正確**。 3. 由於$\mathbf{F_E} = q \mathbf{E} = (0, qE, 0)$,除了質點速度正好與$+y$方向垂直時,靜電力會對質點作功,**\(C\)選項錯誤**。 4. 由於$\mathbf{F_B} = q (\mathbf{v} \times \mathbf{B})$,**(D)選項錯誤**。 5. 質點在此電磁場中的運動軌跡不會是圓形,**(E)選項錯誤**。 </br> <img height="80%" width="80%" src="https://imgur.com/AiXfTPW.png" style="display: block; margin-left: auto; margin-right: auto;"/> <div style="text-align:center">使用 VPython 模擬的結果</div> </br> ## 使用 VPython 模擬質點運動狀況 ([GlowScript 網站動畫連結](https://www.glowscript.org/#/user/yizhe/folder/Public/program/22-2.chargemotion)) ```python= from vpython import * """ 1. 參數設定, 設定變數及初始值 """ size, m, q = 0.005, 1E-10, 1E-9 # 粒子半徑, 質量, 電量 v0 = vec(0, 0, 0) # 粒子速度 L = 0.4 # 坐標軸長度 limit = 2*L # 邊界 B_field = vec(0, 0, 10) # 磁場 E_field = vec(0, 10, 0) # 電場 t, dt = 0, 1E-5 # 時間, 時間間隔 """ 2. 畫面設定 """ # 產生動畫視窗 scene = canvas(title="Charged Particle in Electric Field and Magnetic Field", width=800, height=600, x=0, y=0, center=vec(0.1*L, 0.1*L, 0), range=0.6*L, background=color.black) # 產生帶電粒子 charge = sphere(pos=vec(0, 0, 0), radius=2*size, v=v0, color=color.red, m=m, make_trail=True) # 產生坐標軸及標籤 arrow_x = arrow(pos=vec(-L/2, 0, 0), axis=vec(L, 0, 0), shaftwidth=0.6*size, color=color.yellow) label_x = label(pos=vec(L/2, 0, 0), text="x", xoffset=25, color=color.yellow, font="sans") arrow_y = arrow(pos=vec(0, -L/2, 0), axis=vec(0, L, 0), shaftwidth=0.6*size, color=color.yellow) label_y = label(pos=vec(0, L/2, 0), text="y", yoffset=25, color=color.yellow, font="sans") arrow_z = arrow(pos=vec(0, 0, -L/2), axis=vec(0, 0, L), shaftwidth=0.6*size, color=color.yellow) label_z = label(pos=vec(0, 0, L/2), text="z", xoffset=-25, yoffset=-25, color=color.yellow, font="sans") # 產生表示磁場的箭頭及標籤 arrow_B = arrow(pos=vec(-L/2, 0, 0), axis=B_field.norm()*0.1, shaftwidth=size, color=color.green) label_B = label(pos=vec(-L/2, 0, 0), text="B", xoffset=25, yoffset=25, color=color.green, font="sans") arrow_E = arrow(pos=vec(-L/2, L/4, 0), axis=E_field.norm()*0.1, shaftwidth=size, color=color.cyan) label_E = label(pos=vec(-L/2, L/4, 0), text="E", xoffset=25, yoffset=25, color=color.cyan, font="sans") # 產生表示速度、加速度的箭頭 arrow_v = arrow(pos=charge.pos, shaftwidth=0.5*size, color=color.blue) arrow_a = arrow(pos=charge.pos, shaftwidth=0.5*size, color=color.magenta) """ 3. 物體運動部分 """ while(abs(charge.pos.x) < limit and abs(charge.pos.y) < limit and abs(charge.pos.z) < limit): rate(500) # 計算帶電粒子所受合力, 更新帶電粒子加速度、速度、位置 F = q*cross(charge.v, B_field) + q * E_field charge.a = F/charge.m charge.v += charge.a*dt charge.pos += charge.v*dt # 更新表示速度、加速度的箭頭, 只畫出方向以避免動畫自動縮小 arrow_v.pos = charge.pos arrow_a.pos = charge.pos arrow_v.axis = charge.v.norm()*0.1 arrow_a.axis = charge.a.norm()*0.1 # 更新時間 t += dt ``` </br> 這個程式是以〈[帶電粒子在磁場中的運動](https://hackmd.io/s/rkKGrtOfm)〉當中的程式修改而成,差別在於 1. 加上電場 **E_field = vec(0, 10, 0)** 2. 依照題目要求修改磁場為 **B_field = vec(0, 0, 10)** 3. 修改粒子初速度為 **vec(0, 0, 0)** 4. 修改計算帶電粒子合力的算式為 **F = q*cross(charge.v, B_field) + q * E_field** 由於粒子初速度為0,此時只有受到$+y$方向的靜電力作用,粒子會先朝$+y$方向加速、移動一小段距離。接著同時受到$+y$方向的靜電力及$+x$方向磁力的作用,粒子速度朝$+x$方向偏轉。由於磁力與速度方向垂直,磁力不會對粒子作功,只會使粒子轉彎,當粒子回到$x$軸上時速度會變回0,接著重複同樣的運動過程。 </br> ## 結語 這是一個很難憑空想像的題目,但是藉由 VPython 我們可以很輕鬆地畫出粒子的運動過程,這就是學習程式語言能帶來的好處。 </br> --- ###### tags:`VPython`、`Physics`