Страница 1 из 2

дифференцирование графика

Добавлено: 11 фев 2015, 16:23
Radioboter
Здравствуйте!
Помогите, пожалуйста, сделать следующее:
у меня есть точки (X ,Y) 10 штук, например. Мне нужно по этим точкам построить график, найти его производную и нарисовать в виде графика.

Re: дифференцирование графика

Добавлено: 12 фев 2015, 21:13
Meteor
Вспоминайте геометрический смысл производной - берите две соседние точки (Xi,Yi и Xi+1,Yi+1), найдите разности dY=Yi+1-Yi и dX=Xi+1-Xi, по результатам находите dY/dX это и будет производная. Из ваших 10 исходных точек, получится 9 точек с производными. График и цикл думаю разберетесь как получить

Re: дифференцирование графика

Добавлено: 13 фев 2015, 23:24
bartex
Вот два примера - вариант1 - попроще, вариант 2 -поинтересней.
В обоих вариантах решается классическая задача: скорость = путь/время.
P.S. При сохранении в версии 8.2 у меня выскакивают предупреждения, не знаю, сможете ли Вы открыть у себя программу... :shok:
Поэтому дополнительно выкладываю сканы

Re: дифференцирование графика

Добавлено: 23 май 2018, 12:12
Andrey Petrzhik
Всем привет! Поставил себе задачку написать просмотрщик .dat файлов с ВАХами. ВАХи строит, а вот производную как-то по-дурацки... производную считал также как советовал bartex. Есть есть какие идеи или хотя бы догадки, буду рад услышать. Спасибо!
P.S. в приложении картинка дифференциального сопротивления (производной ВАХ) построенная по простейшему алгоритму, предложенному выше, и по алгоритму Origin'a (не знаю какому).
Изображение
Изображение

Re: дифференцирование графика

Добавлено: 23 май 2018, 12:25
Andrey Petrzhik
Картинки

Re: дифференцирование графика

Добавлено: 23 май 2018, 12:33
Andrey Petrzhik
ВАХа пишется так: свипирую ток 0...Imax...0...-Imax...0. Если взять dat файл и вырезать все минуса + оставить только проход от 0...Imax, производная более-менее берётся. Можно конечно что-то придумать чтобы бить входные данные, но как-то не очень хочется...

Re: дифференцирование графика

Добавлено: 23 май 2018, 12:39
Andrey Petrzhik
А вот txt-файл если кто вдруг решит поразвлекаться...

Re: дифференцирование графика

Добавлено: 23 май 2018, 13:35
IvanLis
Andrey Petrzhik писал(а):А вот txt-файл если кто вдруг решит поразвлекаться...
Для корректного вычисления производной (численными методами) необходимо чтобы массив (аргумента) был отсортирован по возрастанию (ну и значение функции нужно переставлять тогда).
У Вас сейчас это условие не выполняется, по этому и косяки такие.

Re: дифференцирование графика

Добавлено: 23 май 2018, 13:43
Andrey Petrzhik
IvanLis,
т.е. я выстраиваю табличку данных по токам от -Imax до +Imax и каким то образом сохраняю привязку каждого тока к "своему" напряжению... ага, ща подумаю как бы это сделать. Спасибо!

Re: дифференцирование графика

Добавлено: 23 май 2018, 13:53
IvanLis
Andrey Petrzhik писал(а):IvanLis,
т.е. я выстраиваю табличку данных по токам от -Imax до +Imax и каким то образом сохраняю привязку каждого тока к "своему" напряжению... ага, ща подумаю как бы это сделать. Спасибо!
Нет, у вас сейчас напряжение изменяется от 0 -> min -> max -> 0
Лучше взять участок min..max, проверить на монотонность, и по нему уже строить производную.
Снимок экрана от 2018-05-23 13-42-02.png
Снимок экрана от 2018-05-23 13-42-02.png (4.82 КБ) 6563 просмотра
А Вы сейчас считаете производную от функции имеющей разрывы.

Re: дифференцирование графика

Добавлено: 23 май 2018, 18:08
Andrey Petrzhik
Ага, да, разумно, так и сделал. Пока что руками. Оставил участок -I...+I. В нуле ещё руками вбил 0 напряжения на всякий случай. Лучше, но кривая сдвинута оказывается... что ещё не так может быть? Приложил iv-rdv.vi - тут всё и происходит, а потом передаётся в iv_ascii_tab_viewer.vi. 12я labview. Также приложил скомпилированный вариант, который откроет .dat файл по щелчку, если его в windows ассоциировать с программкой.

Re: дифференцирование графика

Добавлено: 23 май 2018, 22:40
IvanLis
Andrey Petrzhik писал(а):Ага, да, разумно, так и сделал. Пока что руками. Оставил участок -I...+I. В нуле ещё руками вбил 0 напряжения на всякий случай. Лучше, но кривая сдвинута оказывается... что ещё не так может быть?
Возможно Вы где-то еще накосячили, у меня все нормально получается, хотя я "0" не добавлял.
Снимок экрана от 2018-05-23 22-36-28.png
Наверняка он как раз и оказался лишним.
Искать ошибки в Вашем коде уже нет возможности.
Посмотрите, как у меня реализовано.
1.png
Untitled 1.vi
lv2010
(20.79 КБ) 154 скачивания
----------------
Я что-то глянул.... не производная у нас получилась.
Производная, это отношение изменения функции к изменению аргумента: df/dx
Тогда должно получиться нечто:
Снимок экрана от 2018-05-24 00-09-48.png
Либо исходная зависимость примет вид:
Снимок экрана от 2018-05-24 00-14-13.png
Снимок экрана от 2018-05-24 00-14-13.png (6.84 КБ) 6531 просмотр

Re: дифференцирование графика

Добавлено: 24 май 2018, 01:32
Andrey Petrzhik
О сколько всего... класс. У вас как-то не так сделано как у меня... пока не понял, но постараюсь разобраться. По поводу производная - не производная... У меня есть 2 колонки: нулевая это напряжение, а первая - это ток. Ток задаю (аргумент), напряжение измеряю (функция). Чтобы узнать сопротивление я делю напряжение на ток. Также могу поделить ток на напряжение, и получу проводимость. Потом уже эту проводимость переверну... сходу не соображу будет ли разница.

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

В любом случае ещё покопаю в этом направлении и отпишусь чего выйдет. dat файлов намерил куча - все фиг построишь в сторонней программе...

Спасибо за помощь!

Re: дифференцирование графика

Добавлено: 24 май 2018, 17:15
IvanLis
Andrey Petrzhik писал(а):Да, и у вас тоже кривая вышла смещенная, а в Origin она получается практически идеально симметричная... как так не пойму... хоть я там строил по всем имеющимся в файле-исходнике точкам (не вырезал данные).

В любом случае ещё покопаю в этом направлении и отпишусь чего выйдет. dat файлов намерил куча - все фиг построишь в сторонней программе..
Наверняка там используется аппарат интерполяции, аппроксимации, ресемплинга.
По этому и кривые гладкие получаются.

Но если хотите по честному, то уменьшайте шаг при измерении характеристики.

Re: дифференцирование графика

Добавлено: 25 май 2018, 13:04
Andrey Petrzhik
Пока оставил как есть, хоть у меня и немного по-другому строит, но пока сойдёт. Алгоритм самый простейший (Вар. 1 bartex)... я скачал его и даже скопипастил себе на всякий случай... программа работает также, т.е. вроде как я не облажался;)
А вот теперь встала задачка сортировать данные автоматом. Поставил себе OpenG, и ну думаю она сама всё отсортирует... так вот не сортирует. Знатоки, подскажите пож что не так? Когда сортирую по 2й (от нуля считаем) колонке, она строит, а по 1й не строит. Неужели отрицательные значения не понимает?