---
# System prepended metadata

title: 靜電場(Electrostatic field)

---

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





