Я пытаюсь решить / смоделировать уравнение баланса материала в Python. Я хочу остановить симуляцию, когда одно из значений концентрации становится отрицательным. Я использовал условный оператор с последующей функцией перерыва. Ошибка не отображается. Я не понимаю, почему это не работает. Правильно ли размещено заявление о разрыве? Пожалуйста помоги!! Вот мой код:
def simulation(z,t,k):
k1 = k[0]
k2 = k[1]
k3 = k[2]
tol = z[0]
H = z[1]
O = z[2]
dHdt = k1*tol*H - k2*tol*H
dtoldt = (-k1 * tol * H) - (k1 * tol * H) - (k3 * tol * O)
dOdt = -k3*tol*O
for i in range (0,3):
if z[i] < 0:
break
return [dHdt, dtoldt, dOdt]
k = [125.656, 478.36, 2698.3]
t = np.linspace(0, 1000, 100)
z0 = [100, 150, 200]
z = odeint(simulation, z0, t, args=(k,))
print(z)