Расчет и 3D-визуализация электрического поля заряженных пластин на Python
Прямоугольная пластина
Поставим перед собой следующую задачу: пусть имеется бесконечно тонкая металлическая пластина прямоугольной формы со сторонами $2a$ и $2b$, которая обладает равномерным распределением заряда (толщиной пластины можно пренебречь). Зададим поверхностную плотность заряда как $\sigma > 0$. Требуется вычислить напряженность электрического поля $E(x_0,y_0,z_0)$, создаваемого этим проводником в произвольной точке трехмерного евклидова пространства. Дополнительно исследуем конфигурацию поля для пластины эллиптической конфигурации.
Решение: Зафиксируем начало координат $O$ в правосторонней декартовой системе $XYZ$ строго по центру пластины так, чтобы ее плоскость совпадала с координатной плоскостью $XOY$. Приведем принципиальную схему:
Закон КулонаНачало решенияКонец решения
Для наглядной демонстрации полученных выкладок напишем скрипт на языке Python:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
Физические константы
eps0 = 8.85e-12 # электрическая постоянная
sigma = 1.0 # поверхностная плотность заряда
a = 2.0 # половина размера пластины по x
b = 3.0 # половина размера пластины по y
Создаем сетку для визуализации
x = np.linspace(-2, 2, 20)
y = np.linspace(-2, 2, 20)
z = np.linspace(-2, 2, 20)
X, Y, Z = np.meshgrid(x, y, z)
Функция для расчета электрического поля
def electric_field(x0, y0, z0):
Интегрирование по пластине
Ex = 0
Ey = 0
Ez = 0
for dx in np.linspace(-a, a, 20):
for dy in np.linspace(-b, b, 20):
r = np.array([x0-dx, y0-dy, z0])
r_mag = np.linalg.norm(r)
Ex += (x0-dx) / r_mag**3
Ey += (y0-dy) / r_mag**3
Ez += z0 / r_mag**3
Ex *= sigma / (4 * np.pi * eps0)
Ey *= sigma / (4 * np.pi * eps0)
Ez *= sigma / (4 * np.pi * eps0)
return Ex, Ey, Ez
Расчет поля в каждой точке сетки
Ex, Ey, Ez = np.zeros_like(X), np.zeros_like(Y), np.zeros_like(Z)
for i in range(X.shape[0]):
for j in range(X.shape[1]):
for k in range(X.shape[2]):
Ex[i,j,k], Ey[i,j,k], Ez[i,j,k] = electric_field(X[i,j,k], Y[i,j,k], Z[i,j,k])
M = np.sqrt(Ex2 + Ey2 + Ez**2)
Ex = Ex/M
Ey = Ey/M
Ez = Ez/M
Построение векторов поля
ax.quiver(X, Y, Z, Ex, Ey, Ez, length=0.1, normalize=True, pivot="middle", cmap=cm.viridis)
Отображение пластины
ax.plot_surface(np.linspace(-a, a, 10), np.linspace(-b, b, 10), np.zeros((10,10)),
color="gray", alpha=0.5, zorder=10)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('Электрическое поле равномерно заряженной пластины')
plt.show()
Итоговый результат работы программы представлен ниже:
Электрическое поле прямоугольной пластины
Если исследуемая пластина ограничена эллиптическим контуром с полуосями $2a$ и $2b$, рациональнее перейти к цилиндрической системе координат.
Пусть орт ортогонального базиса ориентирован в сторону проекции рассматриваемой точки на плоскость $XOY$, орт $j$ направлен по часовой стрелке перпендикулярно первому орту в плоскости $XOY$, а орт $k$ совпадает с положительным направлением вертикальной оси $OZ$. Такая система векторов также образует правую тройку. Сделаем схематические чертежи:
Эллиптическая пластинаИнтегрирование в цилиндрических координатах.Для круглой пластины.
Составим программный код на Python для моделирования электростатического поля круглой равномерно заряженной пластины:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
Физические константы
eps0 = 8.85e-12 # электрическая постоянная
sigma = 1.0 # поверхностная плотность заряда
R = 1.0 # радиус пластины
Создаем сетку для визуализации
r = np.linspace(0, 2 R, 20)
theta = np.linspace(0, 2 np.pi, 40)
z = np.linspace(-2 R, 2 R, 20)
R_grid, Theta_grid, Z_grid = np.meshgrid(r, theta, z)
X = R_grid np.cos(Theta_grid)
Y = R_grid np.sin(Theta_grid)
Функция для расчета электрического поля
def electric_field(x0, y0, z0):
Ex = 0
Ey = 0
Ez = 0
# Интегрирование по круглой пластине
for rho in np.linspace(0, R, 20):
for phi in np.linspace(0, 2 * np.pi, 20):
x = rho * np.cos(phi)
y = rho * np.sin(phi)
# Вычисляем вектор от элемента к точке наблюдения
dx = x0 - x
dy = y0 - y
dz = z0
r_mag = np.sqrt(dx ** 2 + dy ** 2 + dz ** 2)
# Добавляем вклад элементарного поля
Ex += dx / r_mag ** 3
Ey += dy / r_mag ** 3
Ez += dz / r_mag ** 3
# Умножаем на константы
Ex *= sigma / (4 * np.pi * eps0)
Ey *= sigma / (4 * np.pi * eps0)
Ez *= sigma / (4 * np.pi * eps0)
return Ex, Ey, Ez
Расчет поля в каждой точке сетки
Ex = np.zeros_like(X)
Ey = np.zeros_like(Y)
Ez = np.zeros_like(Z_grid)
Оптимизируем циклы
for i in range(X.shape[0]):
for j in range(X.shape[1]):
for k in range(X.shape[2]):
if R_grid[i, j, k] <= R: # проверяем, что точка внутри пластины
Ex[i, j, k], Ey[i, j, k], Ez[i, j, k] = electric_field(X[i, j, k], Y[i, j, k], Z_grid[i, j, k])
Таким образом, в рамках данной работы были выведены аналитические соотношения для расчета электростатического поля равномерно заряженных проводящих пластин прямоугольной, круглой и эллиптической конфигураций посредством прямого интегрирования по поверхности. Кроме того, проведен подробный анализ полученных закономерностей. Для пространственного представления результатов было разработано программное обеспечение на Python, с помощью которого построены трехмерные векторные диаграммы распределения поля.
Успешно решена классическая и крайне важная задача электростатики.
10.Подлесный Д.В. «Расчёт электростатических полей методом изображений»
11.Исаев Ю. Н., Кулешова Е. В., Русол Д. А. «Метод расчёта распределения зарядов сплошных пластин и пластин с отверстием в форме круга и форме сферических сегментов при наличии внешнего электростатического поля»
12.Исаев Ю. Н. «Расчёт распределения индуцированного заряда круглой проводящей пластины во внешнем электростатическом поле»