请推导在xoy平面中相距为2l的两个等值异号电荷的电力线方程 和相距为21的两个等值同号电荷的电力线方程,并利用计算机 绘图绘制相距1m的1C与-1C和1C与1C两种电力线图形。求完整代码
时间: 2024-03-20 07:41:52 浏览: 23
在xoy平面中,两个点电荷分别为$q_1$和$q_2$,它们之间的距离为$d$,则电力线方程为:
$$
\frac{(x-x_1)(y-y_2)-(x-x_2)(y-y_1)}{q_1q_2}=\frac{z-z_1}{q_1}+\frac{z-z_2}{q_2}
$$
其中,$(x_1,y_1,z_1)$和$(x_2,y_2,z_2)$分别是两个点电荷的坐标。
对于等值异号电荷的情况,两个点电荷的电量$q_1$和$q_2$分别取正负值,则电力线方程为:
$$
\frac{(x-x_1)(y-y_2)-(x-x_2)(y-y_1)}{q^2}=\frac{z-z_1}{q}-\frac{z-z_2}{q}
$$
其中,$q$为电量的绝对值,$d=2l$。
对于等值同号电荷的情况,两个点电荷的电量$q_1$和$q_2$均为正值或均为负值,则电力线方程为:
$$
\frac{(x-x_1)(y-y_2)-(x-x_2)(y-y_1)}{q^2}=\frac{z-z_1}{q}+\frac{z-z_2}{q}
$$
其中,$q$为电量的绝对值,$d=21$。
以下是Python代码,使用matplotlib库绘制电力线图形:
```python
import numpy as np
import matplotlib.pyplot as plt
def electric_field(x, y, z, q, x1, y1, z1, x2, y2, z2):
# 计算电场强度
r1 = np.sqrt((x-x1)**2+(y-y1)**2+(z-z1)**2)
r2 = np.sqrt((x-x2)**2+(y-y2)**2+(z-z2)**2)
ex = q*(x-x1)/r1**3-q*(x-x2)/r2**3
ey = q*(y-y1)/r1**3-q*(y-y2)/r2**3
ez = q*(z-z1)/r1**3-q*(z-z2)/r2**3
return ex, ey, ez
def plot_electric_field(x1, y1, q1, x2, y2, q2, d):
# 绘制电力线图形
fig, ax = plt.subplots()
x, y = np.meshgrid(np.linspace(-10, 10, 20), np.linspace(-10, 10, 20))
z = np.zeros_like(x)
for i in range(len(x)):
for j in range(len(y)):
ex, ey, ez = electric_field(x[i,j], y[i,j], z[i,j], q1, x1, y1, 0, x2, y2, d)
ax.plot([x[i,j], x[i,j]+ex/10], [y[i,j], y[i,j]+ey/10], color='r')
ax.scatter(x1, y1, color='b', s=100)
ax.scatter(x2, y2, color='b', s=100)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)
plt.show()
# 绘制相距1m的1C与-1C的电力线图形
plot_electric_field(0, 0, 1, 0, 1, -1, 1)
# 绘制相距1m的1C与1C的电力线图形
plot_electric_field(0, 0, 1, 0, 1, 1, 1)
# 绘制相距为21的两个等值异号电荷的电力线图形
plot_electric_field(0, 0, 1, 21, 0, -1, 21)
# 绘制相距为2l的两个等值同号电荷的电力线图形
plot_electric_field(0, 0, 1, 2, 0, 1, 2)
```