Технический форум по робототехнике.
CiSi » 25 май 2011, 09:42
требуется построить касательную к графику, как показано на рис.
знаем только два массива точек Y и X. Осномная проблемма состоит в том - как определить ту прямую область через которую нужно проводить касательную.
касательную строить получалось но несовсем там где надо.
Помогите с определением прямой области?
Romikgy » 25 май 2011, 09:46
нет определения в какой точке необходимо строить касательную? наиболее прямая область на основном графике или как?
Michael_K » 25 май 2011, 09:58
Что за график-то? Физический смысл есть какой-то? Откуда взялся массив?
На вид кажется, что касательная построена в точке максимальной производной. Это случайность?
Прямая область - это там, где вторая производная равна нулю. (Ну, условно...)
RootAdmin » 25 май 2011, 10:16
Ну, это с первого курса помню - полином надо, потом считать производные функции...
http://www.alexeypetrov.narod.ru/C/sqr_less_about.html
Radist » 25 май 2011, 10:22
Насчет производных поддерживаю: касательная проведена через точку перегиба, первая производная в этой точке максимальна, а вторая меняет знак. Но ТС нужно уравнение линии
y(x)=k*x+b. Одна точка есть, а где взять вторую? Можно брать точку выше и точку ниже точки перегиба и по ним рассчитать прямую. Наверное ТС так и делал, но результат его не устроил. Можно брать другие точки и получать другие линии, но не исключена ситуация, что вторая точка линии не принадлежит массиву точек графика. Есть два пути: взять массив побольше - точность метода возрастет; воспользоваться интерполяцией, но все равно останется вопрос какую взять вторую точку.
=DeaD= » 25 май 2011, 10:36
Задача поставлена некорректно. Какие требования к этой прямой области? Чтобы она включала не менее N% от точек или не менее N% длины графика по оси X или длины графика как кривой или что вообще?
CiSi » 25 май 2011, 12:30
Это график растяжения (сила (у), перемещение(х)) например бумаги или металла.
Условие такое "проводим прямую, совпадающую с начальным линейным участком" (то есть через ту область когда материал начинает растягиваться).
=DeaD= » 25 май 2011, 12:37
CiSi писал(а):Условие такое "проводим прямую, совпадающую с начальным линейным участком" (то есть через ту область когда материал начинает растягиваться).
Подчеркнутые слова очевидно противоречат друг другу. Таки начальным линейным участком (это очевидно ось абсцисс) или когда материал начинает растягиваться (это проведенная на графике прямая) ???
CiSi » 25 май 2011, 13:18
нет, все так. там где проведена прямая К и есть область растяжения, дальше там где изгиб - начинается разрыв материала, а потом спад нагрузки - разрыв (эта область недорисована).
Добавлено спустя 26 минут 43 секунды:
я так понял, сначало надо получить функцию получившегося графика, потом взять ее производную и в зависимости от знака определить места изгибов кривой?
Michael_K » 25 май 2011, 13:24
Ок - физический смысл нашелся.
Откуда взялся массив - это экспериментальные данные?
Что именно нужно найти и зачем?
Я бы, честно, эмпирически что-то выдумывал. Ну, например, сгладить данные фильтром или аппроксимировать чем-то. Тупо найти точку среднего усилия.
Искать в ее окрестностях зону максимума первой производной или зону со второй производной близкой к нулю.
Как-то так.
Это все очень зависит от конкретных данных, погрешностей и цели.
А чисто формально в таком виде задача не решается.
Radist » 25 май 2011, 13:31
2 ТС:
Как вы возьмете функцию графика? Есть апроксимации, конечно, маткад умеет что-то подобное. Кто у вас этим будет заниматься? Комп со своей программой а-ля маткад? Есть координаты точек, производная в точке - предел отношения приращения функции к приращению аргумента. Вторая производная - это производная первой производной. Из первого двумерного массива можно получить еще два двумерных массива, можно найти точку перегиба. Вы пишете, что получали касательную, но она вас не устроила, Напишите каким способом получали, какие были критерии качества и почему ваш результат вас не устроил. Для тех, кто легко владеет маткадом/матлабом, можно было бы привести массив графика, чтобы можно было попробовать найти эту прямую математически. Желательно в виде файла, подключаемого к маткаду.
=DeaD= » 25 май 2011, 14:53
Пока не будет нормальной математической постановки задачи - разговаривать не о чем.
RootAdmin » 25 май 2011, 14:57
Ну так полином (построить функцию по массиву точек) может и МК считать. Медленно но верно.
Michael_K » 25 май 2011, 15:27
=DeaD= писал(а):Пока не будет нормальной математической постановки задачи - разговаривать не о чем.
Как все-таки математики далеки от реальности
CiSi » 25 май 2011, 15:30
Я делал так: разбивал кривую на отрезки (х1у1-х2у2, х2у2-х3у3 и т.д.), находил для каждого отрезка тангенс угла наклона, потом из массива этих коэфициентов искал наибольшее количество одинаковых, после выбора коэффициента из уравнения прямой вычислял "b" - и в конце рисовал касательную. проблема то как раз и состоит в нахождении именно этой прямой области.
Добавлено спустя 1 минуту 24 секунды:Michael_K писал(а):=DeaD= писал(а):Пока не будет нормальной математической постановки задачи - разговаривать не о чем.
Как все-таки математики далеки от реальности
согласен, но как показывает практика без математики тоже туго.