Я решил аналитическое решение уравнения Лапласа для двумерного квадратного прямоугольника и хотел бы построить векторы электрического поля как функцию от y и x. https://www.youtube.com/watch?v=ws3LIfWxfcM Это хорошая ссылка, чтобы показать конечное уравнение, которое я использовал. Я дифференцировал решение для потенциала, чтобы найти электрическое поле.
Проблема, которую я получаю, состоит в том, что мой цикл суммирования, который я настроил, не сходится при увеличении n, следовательно, для n выше 50 я получаю ответы для электрического поля порядка 10 ^ 100. Следовательно, моя программа не отображается, так как значения очень велики.
Мой цикл суммирования до сих пор работал хорошо. Например, я построил график f (x, y) = sin (x) i ^ + cos (y) j ^ и сравнил их с разложением по Тейлору sin (x) и cos (x).
Я считаю, что проблема заключается в делении на sinh (npi). Когда я добавляю этот термин, он быстро становится бесконечно большим числом и отказывается строить сюжет.
import matplotlib.pyplot as plt
import numpy as np
import math
x = np.arange(-1,1,0.1)
y = np.arange(-1,1,0.1)
X, Y = np.meshgrid(x, y)
a = np.zeros(len(X))
for n in range(50):
# x component of electric field
i = (np.cos(n*np.pi)-1)*(-np.cos(n*np.pi*X)*np.sinh(n*np.pi*Y))*1/(np.sinh(np.pi))
a = np.add((i), a)
b = np.zeros(len(Y))
for n in range(50):
# y component of electric field
j = (np.cos(n*np.pi)-1)*(np.sin(n*np.pi*X)*np.cosh(n*np.pi*Y))*1/(np.sinh(np.pi))
b = np.add((i), a)
fig, ax = plt.subplots()
# when I print a or b, it returns inf
q = ax.quiver(X, Y, a, b)
plt.show()
Я ожидаю, что вектор электрического поля будет очень большим у "стен".