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

Задача поставлена некорректно. что означает "где линия меняется"? Где точки стоят, там и меняется, делов-то. Ведь нет шкал по x/y. Точки перегиба (локальные оптимумы) ? Но тогда некоторые пропущены.
Если надо оцифровать график, так есть софт в изобилии, но там тоже надо шкалы придумывать/задавать. Если функция уже задана (аналитически или таблично) , то тупо задать интервал и просканировать игреки в n-1/n/n+1 точках при заданной дельте. т. е. Yn=f(Xn) д. б. выше/ниже линии составленной из точек у (n-1)&y(n+1) на определённую величину. Да, это и будет точка перегиба, да, её можно найти аналитически, если известна функция
Если надо оцифровать график, так есть софт в изобилии, но там тоже надо шкалы придумывать/задавать. Если функция уже задана (аналитически или таблично) , то тупо задать интервал и просканировать игреки в n-1/n/n+1 точках при заданной дельте. т. е. Yn=f(Xn) д. б. выше/ниже линии составленной из точек у (n-1)&y(n+1) на определённую величину. Да, это и будет точка перегиба, да, её можно найти аналитически, если известна функция
Жасулан Абдибек
функция не задана, оцифровывать тоже не надо (эти данные есть в табличном виде)
Вычисляя производную по ходу графика, например. Смена знака производной и будет обозначать такую точку. Тут важно только правильно подобрать интервал - и чтобы не слишком промазать, и чтобы шумы исключить.
В каком виде твоя "синяя" линия? "Некоторые" - это не пояснение. И что такое для тебя "линия меняется"?
Жасулан Абдибек
синяя линия в виде набора цифр (x/y), меняется это значит где вторая производная не равна 0
Нужно сравнить точку с предыдущей и с последующей. Если разность с предыдущей точкой и разность с последующей точкой одного знака, то это точка перегиба.
На картинке функция "меняется" там, где больше всего "выпукла". Т. е. вторая производная достигает локальных максимумом и минимумов. Это не точки перегиба. Не знаю, имеют ли эти точки спец. названия.
Но если речь идет о чмах рассчета производных высших порядков, то смотри
https://ru.wikipedia.org/wiki/Численное_дифференцирование
Тебе нужно для второй производной найти локальные максимумы и минимумы, а для этого третью производную полезно приравнять к нулю.
Но если речь идет о чмах рассчета производных высших порядков, то смотри
https://ru.wikipedia.org/wiki/Численное_дифференцирование
Тебе нужно для второй производной найти локальные максимумы и минимумы, а для этого третью производную полезно приравнять к нулю.
Точки расставлены достаточно непонятно: точно не на местах обнуления первой (максимум/минимум) и второй (точки перегиба) производных. Более похоже на точки, задающие поведение кривой в векторном редакторе.
Алгоритм может называться определение (или оптимизация расположения) узловых точек при кусочно-полиномиальной аппроксимации.
Это неплохая тема для курсовой или даже дипломной работы.
Отсюда печальный вывод: готового алгоритма для нахождения "красных" точек нет.
Так как ваша линия задаётся последовательностью пар координат (x, y), то в общем случае линия не будет функцией (пример - спираль) . Это ещё более усложняет ситуацию.
Что можно посоветовать: попробовать решить более простую задачу.
Дано N точек, необходимо провести через них кривую Безье таким образом, чтобы среднеквадратичное отклонение точек от кривой было меньше заранее заданного значения.
Если удалось построить такую кривую, то точек нужно добавить и попробовать снова, если нет, то точек слишком много и их количество надо сократить.
Это на пальцах, а если конкретно, то всякие Mathcad'ы должны это уметь делать.
Алгоритм может называться определение (или оптимизация расположения) узловых точек при кусочно-полиномиальной аппроксимации.
Это неплохая тема для курсовой или даже дипломной работы.
Отсюда печальный вывод: готового алгоритма для нахождения "красных" точек нет.
Так как ваша линия задаётся последовательностью пар координат (x, y), то в общем случае линия не будет функцией (пример - спираль) . Это ещё более усложняет ситуацию.
Что можно посоветовать: попробовать решить более простую задачу.
Дано N точек, необходимо провести через них кривую Безье таким образом, чтобы среднеквадратичное отклонение точек от кривой было меньше заранее заданного значения.
Если удалось построить такую кривую, то точек нужно добавить и попробовать снова, если нет, то точек слишком много и их количество надо сократить.
Это на пальцах, а если конкретно, то всякие Mathcad'ы должны это уметь делать.
Жасулан Абдибек
Это слишком математический подход. Проще- проверить кажду точку на перегиб относительно соседних точек. Такой нужен алгоритм
графиком. типо снизу месяцы, слева температура, например
Экстремум функции находится из условия: f'(x) = 0
Похожие вопросы
- Delphi7 - как создать линии с единой точкой старта?
- Информатика. Программирование. Обработка массивов данных. Помогите составить алгоритм и прог. код к нему.
- как превратить синий рисунок на белом фоне в черный рисунок на белом фоне. Через фотошоп. Опишите алгоритм, пожалуйста
- Что такое алгоритмы и структуры данных в информатике поясните простым языком чтобы было понятно для чего это вообще?
- Треугольники, круги, точки и линии
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу
- Вопрос о синем экране смерти как его некоторые называют.
- Почему программирование на первый взгляд такое сложное? Потому что многие не умеют составлять алгоритмы?
- Нужно ли быть очень сильным математиком и хорошо уметь конструировать алгоритмы на позиции Software Engineer?
- Купил бук на нём СЕМЁРКА.Хочу поставить ХР пишет что жёсткий диск не найден или синий экран "СМЕРТИ". Как форматнуть