# 靜電場(Electrostatic field) ## 物理概念 由庫侖定律(Coulomb's Law)出發,一個點電荷![](https://i.imgur.com/475onu1.png) 作用於另外一個點電荷![](https://i.imgur.com/GlWiw41.png)的靜電力,可以用庫侖定律計算出來。 庫侖定律 ![](https://i.imgur.com/U7j2Agb.png)![](https://i.imgur.com/sl2KhPh.png) 有了靜電力![](https://i.imgur.com/52xZADA.png)後,便可以求得靜電場,靜電場![](https://i.imgur.com/cskKwKb.png)定義: ![](https://i.imgur.com/G7atqF7.png) 所以我們可以得靜電場 ![](https://i.imgur.com/6h4hZ6x.png) 需要注意這邊的![](https://i.imgur.com/BRUaME6.png)是單位向量,可以拆解為![](https://i.imgur.com/qPvckaL.png),因此整理我們可得靜電場: ![](https://i.imgur.com/TYn8fym.png) 靜電場是向量場,包含大小與方向,因此我們通常需要用箭號來指出他指向的方向,當我們沿著電場的方向做圖,就會是各位較為熟悉的電力線。 ## 模擬 我們可以使用pyplot中的"streamplot"來處理向量圖,使用方式範例如下,各位可以先行複製並執行看看結果。 ```python= import matplotlib.pyplot as plt import numpy as np x=np.array([-0.5+0.01*i for i in range(101)]) #x座標的範圍 (-0.5~0.5包含頭尾,共101個值) y=np.array([-0.5+0.01*i for i in range(101)]) #y座標的範圍 u=np.array([[0.0 for i in range(101)] for j in range(101)]) #向量的x分量 (共101*101個值是一個二維的array) v=np.array([[0.0 for i in range(101)] for j in range(101)]) #向量的y分量 #在建造array時請注意資料型態,若給他的初始值都是int,則是後將無法進行浮點數的運算 for i in range(101): for j in range(101): if x[j]==0 and y[i]==0: #中心點位置無法定義sin與cos,因此需另外計算向量的值,設為零 u[i][j]=0 v[i][j]=0 else: r=(x[j]**2+y[i]**2)**0.5 sin=y[i]/r cos=x[j]/r u[i][j]=sin v[i][j]=-cos plt.streamplot(x, y, u, v,color='g') #streamplot函式,需丟入x (x座標範圍)、y (y座標範圍)、u (向量的x分量)、v (向量的y分量) #須注意streamplot函式的輸入必須是array,另外可以改變color變數,使向量的顏色改變 plt.show() ``` 由範例中我們可以知道,需要給streamplot 4個array,其中兩個是1-D的array分別是X&Y,另外兩個是2-D array(也可以理解為矩陣形式),要給的是x的分量和y的分量。 各位可以想像一下,有一個二維矩陣,我們將一顆正電荷擺在(0,0)的位置,利用迴圈從左上第一個點,計算每個點到正電荷的x向量和y向量,存入u矩陣和v矩陣中,用stremplot將圖畫出。 由於正電荷的情況較為單純,檔案放在附件中給各位參考,我們這邊可以來看一個比較實際的例子:摩擦玻璃棒所產生的靜電場。 ```python= n=26 x=np.linspace(0,0.25,n) #電荷的x位置以及間隔 y=np.linspace(0,0,n) #電荷的y位置以及間隔 w=0.5 #用來設定矩陣的範圍-0.5~0.5 xlabel_=[-0.5+0.1*i for i in range(11)] #用來製作xticks ylabel=[-0.5+0.1*i for i in range(11)] #用來製作yticks Y,X=np.mgrid[-w:w:101j,-w:w:101j] #這裡用到np.mgrid[] 後面的參數各位可理解為 #從-0.5~0.5切101段 U = np.zeros((101,101)) V = np.zeros((101,101)) for i in range(0,n): U += (X-x[i])/((X-x[i])**2+Y**2)**1.5 #計算每顆電子所貢獻的x向量,從x[1]~x[n] V += (Y/((X-x[i])**2+Y**2)**1.5) #計算每顆電子貢獻的y向量,電子接排列在y=0處 K=(U**2+V**2)**0.5 for i in range(101): for j in range(101): if K[i][j]> 1e+10: K[i][j]=0 fig = plt.figure() plt.scatter(x,y,color='r') plt.streamplot(X, Y, U, V, color='g') #plt.streamplot(X, Y, U, V,color=np.log(K),linewidth=3) fig.set_size_inches(6,4) plt.show() ``` ![](https://i.imgur.com/Nb5aGRX.png)![](https://i.imgur.com/tUXFP38.png) ## 模擬結果 我們先將一個正電荷放在正中間,畫出他的電力線分佈,右圖為改成負電荷的電力線分佈。 ![](https://i.imgur.com/Gy7pbJY.png)![](https://i.imgur.com/WVwvGyS.png) 接著是多電偶極的情況,其中電偶極和電四極都是我們實際常遇到的問題 ![](https://i.imgur.com/6M3hcQD.png)![](https://i.imgur.com/si6kW7b.png) 提醒各位,多個電荷形成的電場,會是個別形成的電場相加。 假如有一排正電荷的排列,其中正電荷分布於x:[0,0.25],y=0,一共有24顆,以及換成正負電荷交錯排列的情況。 ![](https://i.imgur.com/tUXFP38.png)![](https://i.imgur.com/2bkY5ED.png) ## 附錄說明 在旁邊附加文件附上完整的程式碼給各位,分別為streamplot的使用範例,接著是放置正電荷在正中間的電場分佈,最後是磨擦金屬棒(成條正電荷)的電場分佈,各位如果寫作業碰到問題,可以參考附錄的程式碼。 ## 作業 請各位模擬出上面剩下的三張電力線圖,分別為: 1. 將負電荷放置在正中間的情況 2. 將兩顆正電荷分別放置在(-0.1,0)和(0.1,0)這兩個位置 3. 將系統改為四顆電荷分別放置在(-0.1,-0.1)(-0.1,0.1),(0.1,-0.1)和(0.1,0.1)。 4. 將正負電荷交錯排列放置在x:[0,0.25],y=0,一共26顆的情況。 5. 加分題: ![](https://i.imgur.com/GxbC7d8.png) 如上圖,正負電荷交錯排列,從x:[-0.16,0.16],y:[-0.16,0.16]的範圍內有正負交錯排列的電荷,電荷間的間距為0.02,所以一共有17x17個電荷。