matplotlib绘制点电荷电场线
时间: 2023-11-25 18:52:35 浏览: 82
以下是使用matplotlib绘制点电荷电场线的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义点电荷电场函数
def E(q, r0, x, y):
den = np.hypot(x-r0[0], y-r0[1])**3
return q * (x - r0[0]) / den, q * (y - r0[1]) / den
# 定义网格和点电荷位置
nx, ny = 64, 64
x = np.linspace(-2, 2, nx)
y = np.linspace(-2, 2, ny)
X, Y = np.meshgrid(x, y)
q1 = (-1, (0, 0))
# 计算电场
Ex, Ey = np.zeros((ny, nx)), np.zeros((ny, nx))
for i in range(nx):
for j in range(ny):
e = np.array([0.0, 0.0])
e += np.array(E(*q1, x=X[i, j], y=Y[i, j]))
Ex[i, j] = e[0]
Ey[i, j] = e[1]
# 绘制电场线
fig = plt.figure(figsize=(6, 6))
ax = fig.add_subplot(111)
ax.streamplot(x, y, Ex, Ey, color='k', linewidth=1, cmap=plt.cm.inferno,
density=2, arrowstyle='->', arrowsize=1.5)
ax.add_artist(plt.Circle(q1[1], 0.05, color='b'))
ax.set_xlabel('$x$')
ax.set_ylabel('$y$')
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
ax.set_aspect('equal')
plt.show()
```
该示例代码中定义了一个点电荷电场函数E(q, r0, x, y),其中q为电荷量,r0为电荷位置,x和y为网格坐标。然后定义了网格和点电荷位置,计算电场,最后使用streamplot函数绘制电场线,并在图中添加了一个点电荷。