用Python和Matplotlib可视化电磁场:从基础公式到动态模拟
当麦克斯韦方程组遇上Python代码,抽象的电磁学公式便跃然屏上。这不是传统物理教材的复述,而是一场用代码解构场论的视觉盛宴。我们将从点电荷的电场出发,逐步构建出载流导线的磁场模型,最终实现可交互的动态场图——所有这一切,只需NumPy的矩阵运算和Matplotlib的绘图魔法。
1. 电场可视化:从库仑定律到等势面
1.1 点电荷电场的代码实现
库仑定律的数学之美在代码中表现得淋漓尽致。我们先构建一个二维平面网格,用NumPy的meshgrid生成坐标点:
python复制import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
接下来定义点电荷电场计算函数。注意我们使用矢量化运算避免循环:
python复制def point_charge_field(q, x0, y0, X, Y):
r = np.sqrt((X-x0)**2 + (Y-y0)**2)
Ex = q * (X-x0) / r**3
Ey = q * (Y-y0) / r**3
return Ex, Ey
提示:在实际物理场景中,当r接近0时会遇到奇点问题,可以添加一个小量epsilon防止除零错误
绘制电场线时,Matplotlib的streamplot函数能自动计算场线密度:
python复制Ex, Ey = point_charge_field(1, 0, 0, X, Y)
plt.streamplot(X, Y, Ex, Ey, density=1.5, color='b')
plt.scatter([0], [0], c='r', s=100)
plt.title('点电荷电场线分布')
plt.show()
1.2 多电荷系统的场叠加
电磁场的线性叠加特性让复杂场的计算变得简单。假设我们有两个等量异号电荷:
python复制# 正电荷在(-1,0),负电荷在(1,0)
Ex1, Ey
