1

Тема: Як "математично помітити" розбіжності на двох графіках?

Вітаю.
Нехай у нас є два графіки, котрі можуть бути дуже різними (не між собою, а взагалі). На них необхідно помітити такі вершини, котрі, якщо провести по ним лінію, матимуть різний напрямок руку (якщо правий кінець однієї лінії вказує вгору, то на іншому графіку відповідна лінія показує вниз).
Ось приклади таких ліній.

Прихований текст

https://i.imgur.com/rQmP6fP.png
https://i.imgur.com/O4iUY0V.png

Перша ідея: малювати лінії між кожними двома вершинами, або низинами, та перевіряти їх нахил. Але тоді постає питання, як виокремити вершини від низин?

2 Востаннє редагувалося ch0r_t (06.09.2021 19:34:58)

Re: Як "математично помітити" розбіжності на двох графіках?

Але тоді постає питання, як виокремити вершини від низин?

Спершу, - згенерувати* вектор** вершина-низина, обійшовши всі точки і перевіряючи точки координат зліва і з права (наступна-попередня(попер. є "ця" фактично, з якою порівняння відбувається), - якщо продовжує рости чи падати(значення) - перейти до: наступна, пропустивши цю, поки не знайдено точку-"пік").?

Ви не дуже добре/коректно описали словами Вашу проблему. Мені здається.

*слідкуючи за новими даними коли це в реальному часі.
**очевидно звісно, більше не можна покладатися буде на індекс як інше значення (коорд. x) помноживши просто його на конст.інтервал...

малювати лінії між кожними двома вершинами, або низинами, та перевіряти їх нахил

Не зовсім певен нащо вам цей крок буде потрібен.

Ви хочете знайти різницю, коли така є,(на відрізку) між трендами в русі якогось vecA_2d та vecB_2d і якось виділити її?

такі вершини, котрі, якщо провести по ним лінію

Там же відрізок. Промені кудись "показують"/прямують. І "по ним"? - "через них"? чи "з'єднавши їх"?

3

Re: Як "математично помітити" розбіжності на двох графіках?

Поки почав з простого - проходимо по кожній точці, та порівнюємо її з попередньої і наступною. Якщо і попередня і наступна точки менші ніж поточна - тоді це є вершина.
Зелені квадратики вказують на вершини, а червоні стрілочки додані мною - на проблемні вершини.

Прихований текст

https://i.imgur.com/6MinoiU.png

Проблемні вершини трапляються через те, шо іноді дві сусідні точки мають однакове значення.
Можна змінити умову на "менше, або дорівнює", тоді проблєма ніби зникає.

Прихований текст

https://i.imgur.com/dD5wl6X.png

4

Re: Як "математично помітити" розбіжності на двох графіках?

Екстремуми нерепрезентативні. Скажімо, у випадку

     *          *
***** **** ** ** *****
          *  *

ви, за бажання, можете провести лінію між двома верхніми точками або між двома нижніми. Або з'єднати в будь-якій комбінації верхнє і нижнє значення. Вам треба розраховувати середнє по ділянці і порівнювати з таким самим середнім по сусідній ділянці.
Питання більше в розмірі ділянок. Якщо ніяких натяків в умові немає, можете спробувати перетворити функції на ряди Фур'є і подивитися там найзначніші гармоніки.

Подякували: ch0r_t1

5

Re: Як "математично помітити" розбіжності на двох графіках?

koala написав:

Екстремуми нерепрезентативні. Скажімо, у випадку

     *          *
***** **** ** ** *****
          *  *

ви, за бажання, можете провести лінію між двома верхніми точками або між двома нижніми. Або з'єднати в будь-якій комбінації верхнє і нижнє значення. Вам треба розраховувати середнє по ділянці і порівнювати з таким самим середнім по сусідній ділянці.
Питання більше в розмірі ділянок. Якщо ніяких натяків в умові немає, можете спробувати перетворити функції на ряди Фур'є і подивитися там найзначніші гармоніки.

так це ж ніби не функції, а просто послідовність значень, які важкувати передбачити

6

Re: Як "математично помітити" розбіжності на двох графіках?

Функція - це залежність між двома множинами (значеннями часу і що там ви вимірюєте). Те, що у вас немає всіх точок функції, не робить її нефункцією.

Подякували: FakiNyan, leofun012

7 Востаннє редагувалося ReAl (07.09.2021 19:39:40)

Re: Як "математично помітити" розбіжності на двох графіках?

FakiNyan написав:

так це ж ніби не функції, а просто послідовність значень, які важкувати передбачити

Як вже було сказано, залежність чогось від часу то таки функція.
Висмикнуті окремі точки цієї функції — вона ж, але дискретизована.
Коли хочете, використовуйте замість «функція» термін «часовий ряд»

FakiNyan написав:

... матимуть різний напрямок руку (якщо правий кінець однієї лінії вказує вгору, то на іншому графіку відповідна лінія показує вниз

Прихований текст

https://i.imgur.com/rQmP6fP.png
https://i.imgur.com/O4iUY0V.png

Тобто матимуть різні напрямки трендів.
Тематика вилизана всіма отими що на курсах грають, хоча сама по собі робота з часовими рядами, фільтрація, ..., це і ТАК, і що завгодно.
Почніть з банального вже подвійного експоненційного згладжування, де частиною алгоритму є якраз знаходження тренду bt.

Подякували: FakiNyan, koala, leofun013

8

Re: Як "математично помітити" розбіжності на двох графіках?

Наближення можна виконати за допомогою Сплайн, тобто Сплайн-Функціями

Подякували: koala1

9

Re: Як "математично помітити" розбіжності на двох графіках?

ReAl написав:
FakiNyan написав:

так це ж ніби не функції, а просто послідовність значень, які важкувати передбачити

Як вже було сказано, залежність чогось від часу то таки функція.
Висмикнуті окремі точки цієї функції — вона ж, але дискретизована.
Коли хочете, використовуйте замість «функція» термін «часовий ряд»

FakiNyan написав:

... матимуть різний напрямок руку (якщо правий кінець однієї лінії вказує вгору, то на іншому графіку відповідна лінія показує вниз

Прихований текст

https://i.imgur.com/rQmP6fP.png
https://i.imgur.com/O4iUY0V.png

Тобто матимуть різні напрямки трендів.
Тематика вилизана всіма отими що на курсах грають, хоча сама по собі робота з часовими рядами, фільтрація, ..., це і ТАК, і що завгодно.
Почніть з банального вже подвійного експоненційного згладжування, де частиною алгоритму є якраз знаходження тренду bt.

Можете глянути, чи це воно? https://stackblitz.com/edit/react-kpnzl … src/App.js
біла лінія - сам графік
зелена лінія - згладжений графік
жовта лінія - тренд

Там мона йорзати слайдерами, щоб змінювати ступінь згладжування.

10

Re: Як "математично помітити" розбіжності на двох графіках?

FakiNyan написав:
ReAl написав:

Почніть з банального вже подвійного експоненційного згладжування, де частиною алгоритму є якраз знаходження тренду bt.

Можете глянути, чи це воно? https://stackblitz.com/edit/react-kpnzl … src/App.js
біла лінія - сам графік
зелена лінія - згладжений графік
жовта лінія - тренд

Там мона йорзати слайдерами, щоб змінювати ступінь згладжування.

Якось воно себе дивно поводить.
У тій статті я в перший спосіб, чесно кажучи, не вчитувався, бо використовував другий спосіб (два однакових фільтри для s' та s'' підряд, з їхніх виходів вираховується потрібне) ще з часів, коли Вікіпедії не існувало.