Другие языки программирования и технологии

Есть некоторые данные (синяя линяя) . Каким алгоритмом можно найти где линия меняется (красные точки)?

Задача поставлена некорректно. что означает "где линия меняется"? Где точки стоят, там и меняется, делов-то. Ведь нет шкал по x/y. Точки перегиба (локальные оптимумы) ? Но тогда некоторые пропущены.
Если надо оцифровать график, так есть софт в изобилии, но там тоже надо шкалы придумывать/задавать. Если функция уже задана (аналитически или таблично) , то тупо задать интервал и просканировать игреки в n-1/n/n+1 точках при заданной дельте. т. е. Yn=f(Xn) д. б. выше/ниже линии составленной из точек у (n-1)&y(n+1) на определённую величину. Да, это и будет точка перегиба, да, её можно найти аналитически, если известна функция
Андрей Балыкин
Андрей Балыкин
62 455
Лучший ответ
Жасулан Абдибек функция не задана, оцифровывать тоже не надо (эти данные есть в табличном виде)
Вычисляя производную по ходу графика, например. Смена знака производной и будет обозначать такую точку. Тут важно только правильно подобрать интервал - и чтобы не слишком промазать, и чтобы шумы исключить.
В каком виде твоя "синяя" линия? "Некоторые" - это не пояснение. И что такое для тебя "линия меняется"?
Левша @rist@n
Левша @rist@n
98 849
Жасулан Абдибек синяя линия в виде набора цифр (x/y), меняется это значит где вторая производная не равна 0
Нужно сравнить точку с предыдущей и с последующей. Если разность с предыдущей точкой и разность с последующей точкой одного знака, то это точка перегиба.
Abdumumin Sadikov
Abdumumin Sadikov
45 389
На картинке функция "меняется" там, где больше всего "выпукла". Т. е. вторая производная достигает локальных максимумом и минимумов. Это не точки перегиба. Не знаю, имеют ли эти точки спец. названия.
Но если речь идет о чмах рассчета производных высших порядков, то смотри

https://ru.wikipedia.org/wiki/Численное_дифференцирование

Тебе нужно для второй производной найти локальные максимумы и минимумы, а для этого третью производную полезно приравнять к нулю.
МД
Михаил Дитюк
19 662
Точки расставлены достаточно непонятно: точно не на местах обнуления первой (максимум/минимум) и второй (точки перегиба) производных. Более похоже на точки, задающие поведение кривой в векторном редакторе.

Алгоритм может называться определение (или оптимизация расположения) узловых точек при кусочно-полиномиальной аппроксимации.
Это неплохая тема для курсовой или даже дипломной работы.
Отсюда печальный вывод: готового алгоритма для нахождения "красных" точек нет.
Так как ваша линия задаётся последовательностью пар координат (x, y), то в общем случае линия не будет функцией (пример - спираль) . Это ещё более усложняет ситуацию.

Что можно посоветовать: попробовать решить более простую задачу.
Дано N точек, необходимо провести через них кривую Безье таким образом, чтобы среднеквадратичное отклонение точек от кривой было меньше заранее заданного значения.

Если удалось построить такую кривую, то точек нужно добавить и попробовать снова, если нет, то точек слишком много и их количество надо сократить.

Это на пальцах, а если конкретно, то всякие Mathcad'ы должны это уметь делать.
Жасулан Абдибек Это слишком математический подход. Проще- проверить кажду точку на перегиб относительно соседних точек. Такой нужен алгоритм
графиком. типо снизу месяцы, слева температура, например
Экстремум функции находится из условия: f'(x) = 0

Похожие вопросы