電流線沿著z-axis擺設,電流的流向+z。磁力線形成同心圓狀並且與電流導線垂直。 |
![]() |
GlowScript 3.2 VPython scene = canvas(width=800, height=600, center=vec(0, 0, 0.5), background=vec(0,0,0), forward=vec(-1,-1,-1)) | |
glowscript:長直電流導線所生之磁場(PS-BFL-current-line.py) |
在下面的程式當中,產生磁場的電流源取代為一個電流環,磁場的貢獻由一段一段的電流元素,在空間中的向量求和而得到。凈磁場的磁力線分佈如圖形所顯現的,從內部向外彎曲形成一個迴路。 |
![]() |
GlowScript 3.2 VPython scene=canvas(width=800,height=800,center=vec(0,0,0),background=vec(0,0,0),forward=vec(-1,-1,-1)) def BF_coil_1(R,Ni,ic,r,br,bc): mu0=1. ds=2.*pi*R/Ni B=vec(0.,0.,0.) for i in range(Ni): t=2.*pi/Ni*i rp=vec(R*cos(t),R*sin(t),0) dl=ds*vec(-sin(t),cos(t),0.) rrp=r-rp dB=mu0*ic/4.*pi*cross(dl,rrp)/mag(rrp)**3 B=B+dB return B def Bline(R,Ni,ic,r,br,bc,a): maxi=2000 ss=0.01 ri=r for i in range(maxi): B=BF_coil_1(R,Ni,ic,r,br,bc) curr=1 nr=r+B/mag(B)*ss arr=arrow(pos=r,axis=nr-r,shaftwidth=0.02,headwidth=0.02,color=a) r=nr dr=mag(r-ri) if(i>100 and dr < 0.08): break if(i>100 and dr > 3.5): break return ic=5; R=1.; Ni=40; br=0.1 arrx=arrow(pos=vec(0,0,0),axis=vec(4,0,0),shaftwidth=0.02,headwidth=0.02,color=vec(1,0,0)) arrY=arrow(pos=vec(0,0,0),axis=vec(0,4,0),shaftwidth=0.02,headwidth=0.02,color=vec(0,1,0)) arrZ=arrow(pos=vec(0,0,0),axis=vec(0,0,4),shaftwidth=0.04,headwidth=0.02,color=vec(0,0,1)) ring(pos=vec(0,0,0),radius=R,axis=vec(0,0,1),color=vec(1,1,1),thickness=0.02) [sphere(pos=vec(-0.7+0.2*i,0.0,0),color=vec(0,0.5,1),radius=0.05) for i in range(8)] arrow(pos=vec(0,R,0),axis=vec(-0.3,0,0),shaftwidth=0.04,color=vec(1,1,0)) bc=vec(1,0.5,0) for i in range(8): scene.pause('click') xi=-0.7+0.2*i r=vec(xi,0.0,0) Bline(R,Ni,ic,r,br,bc,bc) |
|
glowscript:單一電流環所生的磁場(PS-BFL-current-loop.py) |
我們把前一個程式再繼續的延伸,考慮兩個電流環所產生的磁場。我們把兩個電流環分佈在一個距離上,那麼這樣子所產生的磁場會在兩個環之間形成一個像瓶子一樣的磁場分佈,這樣的磁場分佈稱為磁瓶子(magnetic bottle)。 |
![]() |
GlowScript 3.2 VPython scene=canvas(width=800,height=800,center=vec(0,0,2),background=vec(0,0,0),forward=vec(-1,-1,-1)) def BF_coil_2(R,Z2,Ni,ic,r,br,bc): mu0=1. ds=2.*pi*R/Ni B=vec(0.,0.,0.) for i in range(Ni): t=2.*pi/Ni*i rp=vec(R*cos(t),R*sin(t),0) dl=ds*vec(-sin(t),cos(t),0.) rrp=r-rp dB=mu0*ic/4.*pi*cross(dl,rrp)/mag(rrp)**3 B=B+dB for i in range(Ni): t=2.*pi/Ni*i rp=vec(R*cos(t),R*sin(t),Z2) dl=ds*vec(-sin(t),cos(t),0.) rrp=r-rp rrp0=mag(rrp) dB=mu0*ic/4.*pi*cross(dl,rrp)/rrp0**3 B=B+dB return B def Bline(R,Z2,Ni,ic,r,br,bc,a): maxi=2000 ss=0.01 ri=r for i in range(maxi): B=BF_coil_2(R,Z2,Ni,ic,r,br,bc) curr=1 nr=r+B/mag(B)*ss arr=arrow(pos=r,axis=nr-r,shaftwidth=0.02,headwidth=0.02,color=a) r=nr dr=mag(r-ri) if(i>100 and dr < 0.08): break if(i>100 and dr > 3.5): break return ic=5; R=1.; Z2=4; Ni=40; br=0.1 arrx=arrow(pos=vec(0,0,0),axis=vec(4,0,0),shaftwidth=0.02,headwidth=0.02,color=vec(1,0,0)) arrY=arrow(pos=vec(0,0,0),axis=vec(0,4,0),shaftwidth=0.02,headwidth=0.02,color=vec(0,1,0)) arrZ=arrow(pos=vec(0,0,0),axis=vec(0,0,6),shaftwidth=0.04,headwidth=0.02,color=vec(0,0,1)) ring(pos=vec(0,0,0),radius=R,axis=vec(0,0,1),color=vec(1,1,1),thickness=0.02) ring(pos=vec(0,0,Z2),radius=R,axis=vec(0,0,1),color=vec(1,1,1),thickness=0.02) [sphere(pos=vec(-0.7+0.2*i,0.0,0),color=vec(0,0.5,1),radius=0.05) for i in range(8)] arrow(pos=vec(0,R,0),axis=vec(-0.3,0,0),shaftwidth=0.04,color=vec(1,1,0)) bc=vec(1,0.5,0) for i in range(8): #scene.pause('click') xi=-0.7+0.2*i r=vec(xi,0.0,0) Bline(R,Z2,Ni,ic,r,br,bc,bc) NC=20 |
|
glowscript:二電流環所建立的磁場(磁瓶子)(PS-BFL-2current-loops.py) |
空間中存在一個均勻的磁場,這個磁場是廣泛存在於整個空間當中,因此這個帶電荷的粒子一開始運動就遭受到磁場的作用。磁場的方向是指向+z的方向,具有固定的方向和大小,因此這個帶電粒子在這個磁場中會進行圓週運動。因為粒子的速度和磁場垂直,磁力的方向也會與這兩個方向垂直,因此會形成圓週運動所需的向心力。 circular motion of a charged particle in a uniform magnetic field. THe magnetic force is defined as a cross product: \[ \vec{F}= q \vec{v} \times \vec{B} \] The force is perpendicular to the velocity so it can change the direction of the motion but not its speed. |
![]() |
GlowScript 3.2 VPython scene=canvas(width=600, height=400, center=vec(0, 0, 0), forward=vec(-1,-1,-1)) q=1; m=1; r=1.; v=1. ball0 = sphere(pos=vec(0,0,0), radius = 0.05, make_trail=True, color=color.red) ball = sphere(pos=vec(r,0,0), radius = 0.05, make_trail=True, color=color.yellow) arrx=arrow(pos=vec(0,0,0),axis=vec(2,0,0),shaftwidth=0.02,headwidth=0.02,color=vec(1,0,0)) arrY=arrow(pos=vec(0,0,0),axis=vec(0,2,0),shaftwidth=0.02,headwidth=0.02,color=vec(0,1,0)) arrZ=arrow(pos=vec(0,0,0),axis=vec(0,0,2),shaftwidth=0.04,headwidth=0.02,color=vec(0,0,1)) print_options(width=600, height=100) B=vec(0,0,1) print('帶電粒子受到磁力向量作用, q=',q,' v=',v,' B=',B) ball.v=vec(0,-v,0.0) t=0.; dt = 0.001; NR=int(1./dt) time='{:04.1f}'.format(t) T=label(text=time,pos=vector(1.2,1.2,0)) scene.pause('click') while t < 15: rate(NR) time='{:04.1f}'.format(t); T.text=time ball.a=q*cross(ball.v,B)/m ball.v += ball.a*dt ball.pos += ball.v*dt t=t+dt print(t,ball.pos,ball.v,mag(ball.pos)) |
|
glowscript:磁力與運動-1(PS-MF-motion-1.py) |
motion of 2 charged particles due to the uniform magnetic force in a region of a cylinder.在這個問題當中,帶電粒子在圓柱體所在的區域之內才受到一個均勻磁場的作用力,在圓柱體的外圍並沒有磁力的作用。因此帶電粒子起初在圓柱體的外側時,進行等速度直線運動,進入圓柱體的區域候,粒子的速率不會改變但是方向會轉彎。 |
![]() |
GlowScript 3.2 VPython scene=canvas(width=600, height=400, center=vec(0, 0, 0), forward=vec(0,0,-1)) q=1; m=1; r=1.; v=1. ball0 = sphere(pos=vec(0,0,0), radius = 0.05, make_trail=True, color=color.red) ball1 = sphere(pos=vec(r,0,0), radius = 0.05, make_trail=True, color=color.yellow) ball2 = sphere(pos=vec(-r,0,0), radius = 0.05, make_trail=True, color=color.cyan) arrx=arrow(pos=vec(0,0,0),axis=vec(3,0,0),shaftwidth=0.02,headwidth=0.02,color=vec(1,0,0)) arrY=arrow(pos=vec(0,0,0),axis=vec(0,3,0),shaftwidth=0.02,headwidth=0.02,color=vec(0,1,0)) arrZ=arrow(pos=vec(0,0,0),axis=vec(0,0,3),shaftwidth=0.04,headwidth=0.02,color=vec(0,0,1)) cylinder(pos=vec(0,0,-1),axis=vec(0,0,2),radius=0.5,color=vec(1,1,1),opacity=0.5) print_options(width=600, height=100) B=vec(0,0,4) print('帶電粒子受到磁力向量作用, q=',q,' v=',v,' B=',B) ball1.v=vec(-v,0,0) ball2.v=vec(v,0,0) t=0.; dt = 0.001; NR=int(1./dt) time='{:04.1f}'.format(t) T=label(text=time,pos=vector(1.2,1.2,0)) #scene.pause('click') |
|
glowscript:磁力與運動-2(PS-MF-motion-2.py) |