Я численно (на питоне) решаю дифференциальное уравнение первого порядка, используя метод Эйлера.Я строю решение от времени t = 0 до некоторого произвольного времени, продолжающегося с шагом времени, скажем, размером 0,05.Один из примеров полученного решения приведен на рисунке ниже ![enter image description here](https://i.stack.imgur.com/efGtg.png)
Я хотел бы найти максимумы, которые мы видим на этом рисунке (а также время их появления), и сохранитьих в словаре.Если бы во всем временном диапазоне был только один максимум, я мог бы использовать этот код
y=[xinitial,viinitial,ainitial]
t=0
maximum=-20000
maxai={}
h=0.05
ai=-2.1
for i in range(0,3701):
dydt=computederivs(y)
y = euler(y,dydt,h)
t+=h
if y[0]>maximum:
maximum = y[0]
maxai[ai]=maximum
Поскольку у меня есть несколько локальных максимумов, я должен их обнаруживать по мере движения во времени t, каким-то образом проверяя, когда функция завершается.вниз после восхождения на несколько шагов.Мне также нужно хранить максимумы в списке, который является значением ключа словаря.Я полагаю, что это достаточно распространенная задача, что должны быть хорошо известные способы сделать это более или менее просто?