Работа с графиками функций
Вот есть у меня функция, она там себе поработала и записала результаты в массив:
arr = [1,2,3,4,4,5,6,5,5,1,2,3,5,4,6,2,1] Не так уж и сложно найти наибольшее или наименьшее значение массива, и определить его амплитуду. Но у меня проблема иначе: нужно найти самую долгую волну из самыми большими значениями, которую создает массив. Чтобы было легче представить, вот тот же массив в виде гистограммы: ![]() Для начала, волна - это такая область значений, где есть область спадания и область роста. Если после области спадания начался рост - то это уже совсем вторая волна. На рисунке они обозначены красными линиями, пересекающими гистограмму. Теперь длинна волны - это количество в ней значений. Сила волны - сума всех значений, которая она содержит. Нужно: найти самую долгую и самую сильную волну и возвратить координаты ее начала, конца и суммы элементов. У меня была идея перебирать массив циклом и как то вот так искать все это, но это немного сложно в плане реализации. Нужно ли запоминать все волны и потом их сравнивать, есть способ попроще? Какой цикл лучше использовать? Поэтому прошу помощи у вас. |
Цитата:
обходить массив циклом for. помнить текущее состояние ("подъем" или "спад"). Если на спаде вдруг оказалось, что a[i] > a[i-1], то началась новая волна. У текущей сравнить длину и силу с лидерами, если что - запомнить. |
TimohaP,
вы уверены что волны 9, 5, 3 а не 9, 4, 4? [[1,2,3,4,4,5,6,5,5],[1,2,3,5],[4,6,2,1]] |
Alexandroppolus,
окей, спасибо, я попробую так сделать. рони, а вот тут с точки зрения логики спорно, знаешь -_- хотя да, по тому, как я описал алгоритм, ты все-таки прав |
:write:
{"rez":[[1,2,3,4,4,5,6,5,5],[1,2,3,5],[4,6,2,1]],"maxSum":{"begin":0,"sum":35,"len":9},"maxLen":{"begin":0,"sum":35,"len":9}} |
Цитата:
https://ru.wikipedia.org/wiki/Нормальное_распределение https://ru.wikipedia.org/wiki/Фун...BD.D0.B8.D0.B9 |
Цитата:
Цитата:
Или новая волна начинается только после резкого спада/роста? Тогда почему третья волна начинается не с 15, а с 14? |
Часовой пояс GMT +3, время: 01:30. |