Это мой первый вопрос здесь, поэтому, пожалуйста, успокойся. Мне интересно, есть ли способ интегрировать систему ODE только до тех пор, пока не будет найден локальный максимум указанной переменной. Вот еще несколько деталей:Могу ли я интегрироваться с odeint scipy, пока не будет найден локальный макс?
Назовем нашу систему ODE dX/dt = F(X) where X(t) = [x1(t), x2(t), ... , xn(t)]
. Предположим, что решение этой системы притягивается к устойчивому предельному циклу С всюду, но в одной неустойчивой неподвижной точке р. Выберите некоторые начальные условия X0 не р, а не в C. Мы хотим следовать траектории решения для:
dX/dt = F(X), X(0) = X0 (*)
только до x1 (т) не достигнет своего первого локального максимума.
Прогресс: Использование scipy.integrate.odeint Я могу найти решение предельного цикла C и его периода T, но, начиная с произвольной точки, единственный способ, которым я смог решить эту проблему, - это решение (*) для «долгого времени» (возможно, 4 * T) и, считая это достаточно долгое время, определить первый локальный максимум x1 после факта. Мой более крупный проект требует, чтобы это выполнялось много раз, поэтому я стараюсь сократить время вычисления, где только могу. Похоже, должен быть более быстрый способ сделать это, не написав мой собственный решатель.
Возможно (и, вероятно), что я делаю это слишком сложным? Если вы думаете о другом способе сделать это, я буду благодарен за любые предложения.
Набор солнечных часов (доступный, например, Ассимуло) имеет возможности поиска корней в пределах их решатели CVODE и IDA. – Moritz