Как найти на графике все интервалы возрастания и убывания с помощью Python?
Есть "график" в виде ряда х | y, где x - время, а y - некоторые значения. Как с помощью Python найти все участки возрастания и убывания? Как найти все непрерывные участки, в которых по отношению к конкретной точке все точки имеют значение меньше/больше заданной точки? Есть какие-то готовые решения или хотя бы библиотеки, облегчающие задачу?
1) берём производную
2) смотрим её знак
3) ну а дальше перебор+if
Как заметили, это достаточно лёгкая вещь для библиотеки. Однако, возможно, такие штуки уже есть во всяких математических модулях.
Griboks, В школе должны были учить, что производная бывает у непрерывных дифференцируемых функций. В данном случае я такого в упор не вижу. Сам автор вопроса это подтверждает.
Andy_U, так я же и написал, что это не совсем производная. С математической точки зрения дана кусочно-линейная функция. Аппроксимируем её более разреженной кусочно-линейной функцией. Тогда на каждом "отрезке" найдём производную. Вычислим значение производной в точке между точками аппроксимации. Ну а дальше делаем, как в школе учили.
С математической точки зрения дана кусочно-линейная функция.
Да нет же. Вы знаете только то, что в дискретных точках X[i] функция равна Y[i]. Все что между - неизвестно. Например, если я аппроксимирую последовательность точек (x, y) cплайном третьего порядка, то первая производная будет отличаться от вашей аппроксимации. Поэтому можно и нужно пользоваться только определением типа, если Y[i+1]>Y[I], то тут часть участка возрастания, Y[i+1] == Y[i] ни то, ни се, Y[i+1]<Y[i] - участок убывания. Это кстати, спасает от деления на ноль, когда X[i+1]==X[i].
Ну давайте проверим. y=x*x
y(2)>y(-1)
Получается, что это участок возрастания. Но на самом деле это неправда!!!
Во если мы аппроксимируем эти две точки линией, да ещё и с окрестностями на концах, то ваша формула имеет место быть.
p.s.
Ну вы так и сказали:
Например, если я аппроксимирую последовательность точек (x, y) cплайном третьего порядка, то первая производная будет отличаться от вашей аппроксимации.