Как остановить выполнения solve_ivp после получения первого отрицательного значения в python
python
import numpy as np
from scipy.integrate import solve_ivp
def func(t, y):
return -y
def event(t, y):
return y
event.terminal = True
event.direction = -1
solution = solve_ivp(func, [0, 10], [1], events = event)
print(solution.t)
print(solution.y)
print(solution.message)
В данном примере создана функция event, которая возвращает значение текущей функции при отрицательном значении. После вызова функции solve_ivp, аргумент 'events' принимает значение event. Аргумент 'terminal' указывает, что вычисления должны быть остановлены при наступлении события, а аргумент 'direction' определяет направление пересечения событийной функции. Для задания направления пересечения событийной функции можно указать значение -1, которое означает, что событие наступает при убывании функции.
В результате выполнения данного кода будет получен следующий вывод:
python
[ 0. 0.69314718]
[[1. 0.5 ]]
A termination event occurred.
Из вывода следует, что вычисления были остановлены, когда значение функции стало меньше или равно нулю. Также были выведены значения времени и решения на интервале [0, 0.69314718].Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет