Reanimatorr 0 15 июля, 2010 Опубликовано 15 июля, 2010 · Жалоба Собственно, имеются результаты измерений, нужно провести аппроксимацию их нехитрой кривой и рассчитать несколько значений этой кривой. Попробовал сделать это в Matlab - понравилось. Загнал данные, посчитал. А есть ли вариант вставить это в свою программу не завязываясь на матлаб? У него конечно исходники тулбокса открыты, но там столько наворочено.. либо где найти библиотеки, реализующие аппроксимацию?.. и вообще какие есть варианты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MKS 0 15 июля, 2010 Опубликовано 15 июля, 2010 · Жалоба Посмотрите библиотеку Gsl. Возможно она вам подойдёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
samurad 0 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Numerical Recipes - исходная библиотека отлаженного и хорошо документированного кода на C++, C и Fortran, must-have для инженеров и ученых, часто использующих численные методы, плюс книга (free - изд. 1992, С), подробно описывающая алгоритм каждой функции, возможные "подводные камни" и пути улучшения. Включает методы интерполяции данных прямой и различными кривыми с коэффициентом качества аппрохимации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LiTr 0 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Доброго времени суток! Я думаю, что кроме вопроса "откуда?", должен быть и вопрос "что?", т.е. что за метод аппроксимации нужен, ибо для выбора наиболее подходящего для Вас метода, было бы неплохо знать изначальный вид зависимости, например если её можно рассматривать как линейную, это одно дело (тут вполне хватит метода наименьших квадратов в его простейшем варианте) или кусочно линейной интерполяции если необходимо сохранить значение функции в исходных точках. Если исходная функция представляет собой полином высших порядков, ну или может быть им представлена, тогда можно использовать методы интерполяции Лагранжа (например тупо закопипастить отсюда), Ньютона, ну или выпендрится и использовать сплайн. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Собственно, имеются результаты измерений, нужно провести аппроксимацию их нехитрой кривой и рассчитать несколько значений этой кривой. Origin, если Вы не путаете аппроксимацию с интерполяцией, что многие делают. А алгоритмов много разных для разных случаев. Нелинейное программирование, называется... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Reanimatorr 0 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Большое спасибо ответившим! Библиотеку GSL посмотрел, там есть нужный метод. Разобраться вполне реально, так что вариант решения номер один уже есть! МKS спасибо! Numerical Recipies пока не разобрался, плюс там надо проплачивать, хотя и немного. Аппроксимацию с интерполяцией не путаю, в моем случае это скорее экстраполяция. Модель несложная, но нелинейная, ( a*log(b*x+1) + c*x +d ) и тут нужен Nonlinear Curve Fitting. С прямой бы я разобрался самостоятельно ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Модель несложная, но нелинейная, ( a*log(b*x+1) + c*x +d ) и тут нужен Nonlinear Curve Fitting. С прямой бы я разобрался самостоятельно ) Посоветую разделить на два этапа. Подгоняете b нелинейным алгоритмом. А на каждом шаге решаете линейную задачу подгонки для a, c и d. Получится очень быстро. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vjacheslav 0 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Да нет он не путает - ему нужна именно апроксимация измеренных данных аналитической функцией. Возьмите любой учебник по обработке измерений и смотрите главу "метод наименьших квадратов" - все алгоритмы апроксимации, так или иначе, базируются на этом методе. Уже ответили - извините что встрял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Посоветую разделить на два этапа. Подгоняете b нелинейным алгоритмом. А на каждом шаге решаете линейную задачу подгонки для a, c и d. Получится очень быстро. Угу. При квадратичной норме ошибки "линейная задача подгонки" решается алгебраически. Также алгебраически можно записать первую и вторую полные производные нормы ошибки по b. После чего всё сводится к одномерной задаче нелинейной оптимизации, решаемой методом Ньютона. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Угу. При квадратичной норме ошибки "линейная задача подгонки" решается алгебраически. Также алгебраически можно записать первую и вторую полные производные нормы ошибки по b. После чего всё сводится к одномерной задаче нелинейной оптимизации, решаемой методом Ньютона. Более того, выражение для частной производной по нелинейному параметру простое для вычислений, поэтому градиентные методы... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Более того, выражение для частной производной по нелинейному параметру простое для вычислений, поэтому градиентные методы... Алгебраические формулы в пределах обозримого, и вычислять полные производные ошибки по нелинейному параметру в минимуме по линейным параметрам можно быстро. Так что одномерный Ньютон быстрее и проще. От сложности производной по нелинейному параметру там почти ничего не зависит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Reanimatorr 0 16 июля, 2010 Опубликовано 16 июля, 2010 · Жалоба Серьезный подход к теме ) В принципе мне время вычислений если не сказать что совсем неважно, то на десятом месте точно ) Измерения месяцами идут а это модель старения. Важнее время за которое это можно запрограммить, потому и спрашиваю отлаженные библиотеки.. Полагаю, что на такой функции все методы должны надежно сходиться, так что остается только правильно использовать библиотеку.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 17 июля, 2010 Опубликовано 17 июля, 2010 · Жалоба В принципе мне время вычислений если не сказать что совсем неважно, то на десятом месте точно ) Измерения месяцами идут а это модель старения. Важнее время за которое это можно запрограммить, потому и спрашиваю отлаженные библиотеки.. А, ну тогда не интересно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
suprun 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба Да нет он не путает - ему нужна именно апроксимация измеренных данных аналитической функцией. Возьмите любой учебник по обработке измерений и смотрите главу "метод наименьших квадратов" - все алгоритмы апроксимации, так или иначе, базируются на этом методе. Уже ответили - извините что встрял. Согласен, очень удобный алгоритм и дает хорошие результаты, сам неоднократно его использовал при расчетах,в некоторых случаях даже лучшие чем скажем, метод сплайнов и т.д (по крайней мере в маткаде так точно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба либо где найти библиотеки, реализующие аппроксимацию?.. и вообще какие есть варианты? ну не совсем то что надо автору, но как-то делал такое используя gnuplot, из программы формировал скрипт, звал gnuplot, из лог файла gnuplota забирал коэффициенты. еще можно использовать mathgl как библиотеку http://mathgl.sourceforge.net/mathgl/mathg...#Fitting-sample однако он использует упомянутый выше gsl Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться