Нет. График потенциала будет некрасивый: что это за график из двух точек? Давай-ка сделаем 100 клеток.
Теперь нам надо удлинить список сопротивлений всех клеток. Писать вручную 100 раз цифру 10 - не самое интересное занятие. Поэтому мы импортируем библиотеку numpy:
import numpy as np |
И применим ее функцию full (по английски - "полный")
ρ=np.full(100,10) #Создать массив из 100 клеток, заполненный числами "10" |
Проверяем:
ρ |
array([10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, |
Как видишь, ничего сложного. Зададим также всем ста клеткам нулевой потенциал:
ϕ = np.full(100,0.0) |
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., |
Пришлось написать 0.0 вместо просто "0", а то python норовил создать масив целых чисел, тогда как нам для расчета потенциалов нужны дробные, с плавающей точкой.
Теперь создадим функцию, обеспечивающую работу батарейки. Она будет у нас просто всегда поддерживать в самой левой (нулевой) ячейке -4.5 а в правой (99-й) +4.5 вольта.
def battery(): |
Наша старая функция step() не требует изменений.
def step(a): |
Только теперь мы собираемся применять ее к каждой паре соседних ячеек. Печатать состояние проводника каждый раз при этом совершенно ни к чему, а значит, имеет смысл убрать "print (ϕ)".
Кроме того, мы все чаще работаем с переменными и прибавляем к ним что-то или вычитаем. Я хочу показать тебе способ сокращенной записи этих операций. Ничего сложного:
a=5 |
7 |
В этом примере мы выигрываем в каждой строчке всего один символ, но как правило, выигрыш больше, хотя бы в той же функции step():
def step(a): |
Тут уже в двух строках мы сэкономили 10 символов, а главное - сделали функцию более удобной для понимания. Это в пргограммировании - самое главное. Потому что когда программа растет, человек быстро перестает ее понимать и именно это ограничивает скорость и качество программирования. Самые опытные и эффективные программисты - мастера в том, чтобы делать программы понятными - в первую очередь, для самих себя. Ну и для других, если в работе над программой участвует кто-то еще. Это же самое относится и к техническим системам и к научным теориям.
А полный шаг во времени модель делает при выполнении функции, которую я так и назвал - tick. Она очень проста:
def tick(): |
Что ж, запустим нашу функцию (не забудь сначала запустить ячейки с предыдущими команадами! А то python не найдет каких-нибудь переменных или функций и будет ругаться.).
tick() |
[-4.05e+00 -4.05e-01 -4.05e-02 -4.05e-03 -4.05e-04 -4.05e-05 -4.05e-06 |
О, смотри-ка что произошло! Отрицательный потенциал (хоть и ничтожно малый) сразу пробежал по всему проводнику, а положительный распространился за тот же шаг всего на одну клетку влево. Что же это значит?