# 靜電場(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個電荷。