roboforum.ru

Технический форум по робототехнике.

Касательная к графику

Re: Касательная к графику

=DeaD= » 25 май 2011, 15:49

Michael_K писал(а):Как все-таки математики далеки от реальности :)

Это не математики далеки от реальности, это разговоры о неведомых желаниях далеки от конкретной задачи :)

Добавлено спустя 3 минуты 3 секунды:
Просто если мы решаем математическую задачу, значит ставить её надо в математических терминах. Если же мы решаем прикладную задачу - ставить её надо в прикладных терминах.

А тут попытка спрятать прикладную задачу за математическими терминами без внятной формулировки математической задачи.

Re: Касательная к графику

Michael_K » 25 май 2011, 15:51

Да, это тоже правда.
И все-таки большинство реальных задач фактически не имеют четкой математической постановки. Очень часто работают чисто эмпирические методы. Хотя, конечно, анализу (в какой-то степени) и они тоже поддаются.

Re: Касательная к графику

=DeaD= » 25 май 2011, 15:57

Так ставить такие задачи нельзя в терминах другой области.
Ибо в такой постановке их вообще не решить :)

И тем более нельзя решить задачу ставя её в виде 1 примера графика и указывая в нём пальцем что нужно найти :) потому что такая задача включает в себя решение - вот же оно на рисунке!

Я так понимаю тут надо ставить математически задачу так, что есть ограничение, типа если на графике есть более чем 1 крупный участок (более 10% оси абсцисс в пределах графика) с практически нулевой 2 производной, тогда все участки кроме одного прилегают к границам графика - к левой или правой, и их нужно игнорировать.

Re: Касательная к графику

Michael_K » 25 май 2011, 16:00

Да, я отвечал на первую часть вашей реплики. С дописанным абсолютно согласен.

Re: Касательная к графику

=DeaD= » 25 май 2011, 16:02

В указанной мной выше постановке задачи решение может выглядеть, например, так:
1. Фильтруем и усредняем полученные значения, чтобы не было точечных всплесков;
2. Ищем области почти нулевой (<заданного порога) второй производной большие по ширине чем 10% ширины графика;
3. В случае если таких областей отделенных от левой и правой границы графика более чем одна - выдаём ошибку;
4. Если такая отделенная от левой и правой границы одна - выдаём соотв. ей касательную.

Re: Касательная к графику

Michael_K » 25 май 2011, 16:02

=DeaD= писал(а):такая задача включает в себя решение - вот же оно на рисунке!

Изображение

Re: Касательная к графику

CiSi » 25 май 2011, 16:59

=DeaD= писал(а):1. Фильтруем и усредняем полученные значения, чтобы не было точечных всплесков;

как это сделать?

Re: Касательная к графику

dccharacter » 26 май 2011, 15:53

CiSi писал(а):как это сделать?

делается "движущее окно" значений

например avr - измеренное значение. avr_med - усредненное значение.
берем последние 16-ть значений (например):

int avr = 0, avr_med = 0;
while (1)
{
//measure avr;
.....
//
avr_med = avr_med * (15/16) + avr/16;
}

Re: Касательная к графику

Michael_K » 26 май 2011, 16:58

Эмм...

dccharacter, то что вы написали - совсем не движущееся окно (которое по сути КИХ-фильтр), а вовсе даже наоборот - БИХ-фильтр. Для фильтрации экспериментальных данных (тем более, ограниченного набора, тем более, если нужно не терять "фазу" - координату по оси X) он не очень применим.

Чтобы посоветовать конкретный алгоритм фильтрации, нужно смотреть на данные и знать как они снимались (например, через равные промежутки по оси Х или Y или "строго в беспорядке"), как распределен шум/погрешности и т.п.

Практически же, если у вас есть критерий "правильности" (а у вас он, очевидно, есть - вы же сказали, что вас какая-то касательная "не устраивает"), то проще "поиграть" параметрами и способом фильтрации на нескольких наборах данных.

Re: Касательная к графику

dccharacter » 26 май 2011, 17:10

просто я традиционно сильно затупил (не читал начало треда)

Добавлено спустя 7 минут 59 секунд:
Хм. А если нарисовать отрезок. НАчало отрезка - крайняя левая, конец - крайняя правая. Очевидно, что отрезок будет пересекать график. Берем, и начинаем движение влево - конец отрезка перемещаем на соседнюю точку влево. Пересекает отрезок график? да - двигаемся влево. Нет - начинаем двигать начало отрезка вправо. При этом контролируем ошибки (отклонения) в произвольных точках отрезка. Если они не превышают заданных - значит нашли прямой участок.

Это я предполагаю, что график выглядит так, как на рисунке.

Re: Касательная к графику

=DeaD= » 27 май 2011, 00:10

CiSi писал(а):как это сделать?

Например так - строим усредненный график - вокруг каждой точки выбираем окрестность с центром в этой точке и общей шириной пусть в 5% ширины графика, если там одна наша точка - оставляем, иначе аппроксимируем точки отрезком и считаем, что наша точка в усредненном графике будет иметь координату Y соответствующую на полученном отрезке координате Х нашей точки.

Лучше конечно не тупо усреднять так по всем, а перед таким усреднением сделать предзаход, в котором вообще выкинуть точки которые при таком усреднении сильно перемещаются по оси Y, скажем больше чем на 5% высоты графика.


Rambler\'s Top100 Mail.ru counter