Показать сообщение отдельно
  #1 (permalink)  
Старый 07.03.2017, 20:56
Аспирант
Отправить личное сообщение для TimohaP Посмотреть профиль Найти все сообщения от TimohaP
 
Регистрация: 30.06.2014
Сообщений: 56

Работа с графиками функций
Вот есть у меня функция, она там себе поработала и записала результаты в массив:
arr = [1,2,3,4,4,5,6,5,5,1,2,3,5,4,6,2,1]

Не так уж и сложно найти наибольшее или наименьшее значение массива, и определить его амплитуду. Но у меня проблема иначе: нужно найти самую долгую волну из самыми большими значениями, которую создает массив.
Чтобы было легче представить, вот тот же массив в виде гистограммы:

Для начала, волна - это такая область значений, где есть область спадания и область роста. Если после области спадания начался рост - то это уже совсем вторая волна. На рисунке они обозначены красными линиями, пересекающими гистограмму.
Теперь длинна волны - это количество в ней значений.
Сила волны - сума всех значений, которая она содержит.
Нужно: найти самую долгую и самую сильную волну и возвратить координаты ее начала, конца и суммы элементов.
У меня была идея перебирать массив циклом и как то вот так искать все это, но это немного сложно в плане реализации. Нужно ли запоминать все волны и потом их сравнивать, есть способ попроще? Какой цикл лучше использовать? Поэтому прошу помощи у вас.
Ответить с цитированием