@shadrap

Как написать алгоритм пересечения графиков двух функций с определенным уровнем допуска?

Всем привет!
Есть задача запрограммировать алгоритм пересечения графиков двух функций , с установленным "уровнем близости" значений этих функций. Грубо говоря значения функции dP/dT уменьшаются , а dH значения растут и в какой-то момент они могут пересечься или пройти близко к друг другу на "уровне близости". Задача именно найти пересечение когда одни значения увеличиваются ,а другие уменьшаются.
Что сделано : данные от функций накапливаются в массивах в течении времени .написана функция определения тренда - значения растут или падают с присвоением весовых коэффициентов значениям в разный момент времени.
Как определить пересечение ? - Банально сравнить массивы в цикле считая каждый раз разницу между значениями и если она удовлетворяет "уровню близости" то считать пересечение случившимся? Или есть какой-то более оптимальный вариант? Как преодолеть шумы или случайные значения?
  • Вопрос задан
  • 358 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dmshar
Не очень все понятно, но тем не менее.
Во-первых, функции могут пересечься и тогда, когда обе они растут или обе падают. Просто с разной скоростью. Вы этот случай отбросили намерено?
В-вторых, непонятно, у вас все точки измерений заранее накоплены или вы решаете задачу по мере поступления точек? Если последнее - то тут и думать нечего, просто меряете расстояние между значениями и принимаете решение.
Кстати, не ясно, у вас данные приходят в один момент, или в разные. Во втором случае просто расстоянием не обойдешься - надо искать возможные пересечения функций между точками замера. Это не сложно но тем не менее.
Далее. Если данные все-таки имеются "пакетно накопленные" - то проще всего используя, к примеру ту-же Pandas построить соответствующий ДатаФрейм, в котором точка пересечения (или точкИ пересечения) находятся с помощью одной строчки логического условия. Да и упорядочение точек, если они не одномоментно измерены, в Pandas - тоже стандартная процедура.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Если функция непрерывна и если задана таблично. То можно проинтерполировать значения на интервалах между точками хотя бы по любой гладкой кривой типа полинома. И тогда окажется что несмотря на то что дискретные точки недостаточно близко находились друг к другу, а интерполированные отрезки сблизились к некому "эпсилон".

Тоесть в условии задачи скорее всего не хватает деталей.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Задача именно найти пересечение когда одни значения увеличиваются ,а другие уменьшаются.
речь про резонанс идёт, верно?
Если так, то нужна система из двух неравенств (т.н. "триггер"), решение которой зависит от входных параметров (координат точек функций) с допуском r (исходя из параметрического уровнения окружности).
Как только система будет иметь решение - это будет означать, что функции "пересеклись".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы