LINUX.ORG.RU

Чем аппроксимировать и обработать экспериментальные данные?

 , ,


0

2

Ку!

Имеется много экспериментальных данных - зависимость одного параметра от другого. В идеале график этой зависимости должен выглядеть как две полуокружности. На деле получается кусок этой конструкции: либо левая полуокружность, либо по куску от обеих, либо только правая. Окружности пересекаются в 0.

Задача: из каждой такой зависимости найти точку пересечения окружностей. Если точка пересечения в диапазоне измеряемых значений отсутствует, аппроксимировать график эллипсом и найти его пересечение с осью абсцисс (понятно, что эллипс даст 2 пересечения; выбирать, видимо, нужно то, которое ближе к измеренному диапазону значений).

Вопрос: чем лучше всего это делать? R? Octave? Буду благодарен, если накидаете подходящих ссылок.

★★★★★

Задача не решаема, по крайней мере без ограничений на полуокружности, эллипсы.

Откуда получается такая зависимость?

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

Задача не решаема, по крайней мере без ограничений на полуокружности, эллипсы.

В каком смысле?

Откуда получается такая зависимость?

Импеданс образца от частоты тока.

AITap ★★★★★
() автор топика
Ответ на: комментарий от AITap

В каком смысле?

В том, что два далёких друг от друга и от оси абсцисс полуокружности/эллипса не пересекаются между собой.

Импеданс образца от частоты тока.

Импеданс комплексно-значный же. Ты хочешь чего-то странного.

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

В том, что два далёких друг от друга и от оси абсцисс полуокружности/эллипса не пересекаются между собой.

В получаемых данных должны пересекаться.
Сейчас это делается построением графика, наложением на него эллипса и нахождения пересечения точно выверенным кликом мышки.

Импеданс комплексно-значный же.

Возможно, я что-то путаю, но зависимость имеет примерно вот такой вид: http://rghost.ru/37911132

AITap ★★★★★
() автор топика

Octave вполне подойдет.

У меня задача была не очень-то похожая, но тоже определял параметры окружности: http://eddy-em.livejournal.com/8227.html, http://eddy-em.livejournal.com/7151.html.

С эллипсом задача усложнится: придется сначала примерно определить принадлежащие эллипсу точки, затем отсечь те, в которых для заданного уравнения параболы производные стремятся к бесконечности (да и вообще слишком велики), а затем уже аппроксимировать. В общем, нужно будет разбить точки на 4 сектора, чуть больше, чем 90° (чтобы они немного пересекались). А потом итерациями подгонять параметры, чтобы все сектора принадлежали одному эллипсу.

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от AITap

OK.

Вот, кстати, определение параметров окружности/эллипса методом наименьших квадратов на сях я так и не реализовал: напоролся на грабли (бесконечная производная), начал было оптимизировать (дробить на сектора, как сказал выше), да забросил.

В Octave же это реализуется довольно просто.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от AITap

Если функция несложная, это реализуется операцией «обратного деления» (\).

Здесь я приводил пример аппроксимаций (правда, для матлаба, но в Octave все почти так же).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от AITap

Сейчас это делается построением графика, наложением на него эллипса и нахождения пересечения точно выверенным кликом мышки.

Ох, лол.

Берёшь метод наименьших квадратов, берёшь уравнение эллипса, берёшь свои данные, находишь параметры эллипсов, по уравнениям находишь обе точки пересечения, выбираешь ту, которая больше нравится. В качестве бонуса можешь ещё погрешность посчитать.

anonymous
()
Ответ на: комментарий от anonymous

анонимус с машиной времени! он слетал в будущее и украл мой текст!

nanoolinux ★★★★
()
Ответ на: комментарий от anonymous

Ох, лол.

Вот-вот. Сам не поверил, пока не увидел.

AITap ★★★★★
() автор топика

если покажешь данные я тебе за 10 минут это завтра на матлабе набыдлокодить могу. Ты на каком курсе?

anonymous
()
Ответ на: комментарий от AIv

Хотелось бы использовать правильный инструмент. Вон, на информатике однокурсников учат в Visual Basic матрицы перебирать, но зачем это делать, если есть специализированный софт для расчётов?

AITap ★★★★★
() автор топика
Ответ на: комментарий от AITap

Э... для каких расчетов? Вот мы занимается расчетами... весь софт пишется руками, только что не на вижуал бейсике;-)

А зачем учить таблицу умножения, если есть калькулятор?;-)

AIv ★★★★★
()
Ответ на: комментарий от AIv

Э... для каких расчетов?

Ну, для аппроксимации. В том же Gnuplot есть своя функция для подбора коэффициентов для функции по графику.

весь софт пишется руками, только что не на вижуал бейсике;-)

В моём случае всё равно придётся кодить. Поскольку Octave и Python я знаю примерно одинаково никак, логичнее выбрать более специализированный инструмент.

А зачем учить таблицу умножения, если есть калькулятор?;-)

Чтобы проводить вычисления в отсутствие калькулятора. Кроме того, счёт в уме - отличная зарядка для мозга.

AITap ★★★★★
() автор топика
Ответ на: комментарий от AITap

В моём случае всё равно придётся кодить. Поскольку Octave и Python я знаю примерно одинаково никак, логичнее выбрать более специализированный инструмент.

Пробовал и то и другое. Метод наименьших квадратов есть и там и там. Совет - выбирай питон. numpy - хороший.

yvv ★★☆
()
Ответ на: комментарий от AITap

Поскольку Octave и Python я знаю примерно одинаково никак, логичнее выбрать более специализированный инструмент.

Не то, что я спец по обработке экспериментальных данных... но могу предположить, что все актуальное из Октав в питонячьих либах есть. Все таки учить лучше ЯП общего назначения.

Чтобы проводить вычисления в отсутствие калькулятора. Кроме того, счёт в уме - отличная зарядка для мозга.

Совершенно верно! Теперь замените калькулятор->«специализированный инструмент», «таблица умножения»->«ЯП общего назначения»;-)

Питон не догма... да хоть фортран, хоть С/C++. Просто на питоне удобней парсить файлы с данными и вообще скорость разработки выше. Можно взять яву, руби...шарпы, лисп, хаскель;-) В общем к чему душа лежит.

AIv ★★★★★
()
Ответ на: комментарий от AIv

Мелкие алгоритмы для расчетов в октаве быстрее делать. А потом, если их нужно будет использовать часто, можно и на сях переписать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Безусловно! Если знаешь октав;-)

У ТС-а то на самом деле вопрос не в том, в чем обрабатывать данные, а в том, что бы такое выучить, что бы обрабатывать данные (иначе бы он не спрашивал). Так вот, ИМНО учить надо ЯП общего назначения, это база. А потом уж можно ударятся во всякую эзотерику... Конечно, если ТС не собирается по жизни кодить, а будет тока данные обрабатывать, то надо брать че та совсем специализированное. Но я не уверен, что это именно тот случай, тем более что все равно для каких то сложных случаев кодить ой как придется...

AIv ★★★★★
()
Ответ на: комментарий от AIv

Ну, можно и питон учить — но это уже на любителя.

Eddy_Em ☆☆☆☆☆
()

Origin. Приблизительно шестой версии.

GolemXIV
()
Ответ на: комментарий от AITap

В том же Gnuplot есть своя функция для подбора коэффициентов для функции по графику.

Это и есть метод наименьших квадратов, лол. Я, кстати, гнуплот и хотел посоветовать, заходя в этот тред.

prischeyadro ★★★☆☆
()
Ответ на: комментарий от AIv

Октава - это не эзотерика, это матлаб для бедных.

aedeph_ ★★
()
Ответ на: комментарий от anonymous

ТС давай скидывай данные, я через пару часов свалю до понедельника.

maggotroot
()
Ответ на: комментарий от AIv

Совершенно верно! Теперь замените калькулятор->«специализированный инструмент», «таблица умножения»->«ЯП общего назначения»;-)

Но калькулятор-то есть! И использовать его собираются отнюдь не для забивания гвоздей и не для подсчёта сдачи.

Можно взять яву, руби...шарпы, лисп, хаскель;-) В общем к чему душа лежит.

Лично мне больше нравится Perl :)

В любом случае, правильно выбрать нужно не только язык, но и алгоритм. С ним тоже были вопросы.

AITap ★★★★★
() автор топика
Ответ на: комментарий от AITap

В любом случае, правильно выбрать нужно не только язык, но и алгоритм. С ним тоже были вопросы.

Вот с алгоритма и надо было начинать спрашивать;-)

AIv ★★★★★
()
Ответ на: комментарий от Eddy_Em

Огромное спасибо за пособие, в сочетании с http://gnu-octave.narod2.ru/ получилось очень здорово и понятно. К сожалению, до написания руки так и не дошли (едва успел поспать).

Пример исходных данных: http://paste.debian.net/167450/
Стадно сказать, но я точно не уверен в том, какая именно зависимость должна давать эллипс. Видимо, 1/R от log(f).

AITap ★★★★★
() автор топика
Ответ на: комментарий от maggotroot

А их и нет, вот фокус-то.

На самом деле нечто похожее на эллипс обычно можно высмотреть вблизи минимума на графике.

AITap ★★★★★
() автор топика
Ответ на: комментарий от maggotroot

Она есть вблизи минимума. Я надеялся, что не создам ложного впечатления о том, что зависимость получится близкой к теоретической.

AITap ★★★★★
() автор топика
Ответ на: комментарий от AITap

Годограф, конечно же, получается как зависимость 1/(2*pi*C*f) от R.

Я так понял, и f, и C, и R - величины с погрешностями? Какова точность их измерения?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Прибор (древний компьютер с подключённым через последовательный порт устройством и какой-то программой под DOS) ничего не сообщает о погрешностях.
Как минимум, трём знакам из сопротивления постоянному току (которое он тоже меряет) можно доверять (его проверяли). Остальным его показаниям в лаборатории все просто доверяют. Может быть, их тоже проверяли, но мне об этом не известно.

AITap ★★★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Действительно.

У меня уже получилось что-то написать: http://paste.debian.net/167982/. Оно даже выдаёт похожий на правду результат.

/* Из одних статей следует, что график получаемой из всех файлов зависимости логарифма проводимости от температуры должен быть прямой, в других нарисовано нечно выпуклое вниз. У меня получается второе. */

На этом результате я бы попытался найти (по второй производной) максимально похожую на эллипс часть зависимости и представить, что она и есть то, что нужно аппроксимировать. Сейчас так и делают, правда, прикладывая эллипс руками.

AITap ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.