Вообразите синусоидальную волну, колеблющуюся около нулевой линии. Моя задача - рассчитать наклон в нескольких случайных точках вдоль волны, используя довольно грубую шкалу оси X. (да, это имеет реальное применение)
Когда волна находится в + ve terrirtory (выше нулевой линии), наклон можно рассчитать из:
Slope = (y(n) / y(n-1)) - 1
Это приводит к тому, что v-образные склоны движутся вверх и -в вниз.
Проблема в том, что это нужно переключать, когда мы находимся на -ve территории, и тогда требуются еще два выражения, когда одно из значений равно нулю, всего четыре выражения, которые должны быть выбраны программно с условными операторами.
Я хотел бы найти ОДНО выражение, которое охватывает все четыре условия, поскольку оно находится в центре интенсивного алгоритма и подсчитывает количество кликов!
Я уверен, что это было бы тривиальным решением для математического гения, но этим усталым глазам это ускользает от меня ...
Добавлено:
«Синусоида» на самом деле является индикатором MACD, который выводится из (случайного) изменения цены финансовых рынков. пример будет здесь:
http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_average_conve
Наклон (например, жирной черной линии на нижнем графике) - это то, что мне нужно вычислить, определяемое просто как вверх или вниз (где заголовок вверх + ve)
Проблема в том, что как + ve, так и -ve наклон могут быть выше и ниже нуля. Расчет наклона также может выполняться с использованием приращений, которые пересекают нулевую линию и нулевую линию.
Было бы неплохо найти решение, которое не включает в себя тонну операторов IF ... как, например, смещение всех значений y на фиксированную величину, чтобы они стали + ve, а затем вычисление наклона в области + ve. Мне нужно было бы выбрать число, которое исторически, у никогда не было ниже, например пару порядков, например, (99), и тогда я мог бы выполнить расчет отклонения и одного наклона?