Но с чего бы это?


Я ожидал, что отрицательный потенциал, как и положительный, успеет повлиять за один тик только на соседнюю клетку. Но.. функция step() у нас применяется пошагово, слева направо! И вот она перекачивает часть потенциала из первой клетки во вторую, и тут же принимается за расчет второй, где уже есть этот потенциал, перекачивает часть его в третью - и так далее.

У нас несимметричная модель, точнее программа для ее расчета, вот в чем тут дело!
















ρ=np.full(100,10)
ϕ=np.full(100,0.0)
def battery():
ϕ[0]=-4.5
ϕ[99]=4.5
def step(a):
Δϕ = ϕ[a]-ϕ[a+1] #Считаем разность потенциалов между клетками a и a+1
I=Δϕ/ρ[a] #Найдем силу тока I
ϕ[a]-=I #Утекло из клетки a
ϕ[a+1]+=I #Притекло в клетку a+1
def tick():
battery() #Батарея задает потенциалы на концах
for a in range(99): #Для каждой клетки
step(a) #Рассчитываем обмен потенциалами со следующей
print(ϕ) #Печататем состояние проводника

Как же нам следует ее исправить?