2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Алгоритм МНК
Сообщение10.04.2015, 00:53 
Здравствуйте!

Есть некоторая экспериментальная зависимость, описываемая известной функцией. Для ясности, это функция $f(x)=A \cdot \sin(\omega \cdot x + \varphi)\cdot e^{-b \cdot x}\cdot x^2$
Как это решает матлабовский пакет Сurve Fitting:
Изображение

С задачей справляется просто идеально, находит $A, \omega, \varphi, b$. Используется метод Левенберга — Марквардта, либо доверительных интервалов. Правильно-ли я понимаю, что это нелинейный метод наименьших квадратов?

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

P.S. Или может есть какой-то другой метод, способный дать подобные результаты?

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:15 
Аватара пользователя
Truedoday в сообщении #1002152 писал(а):
Мне не удается найти никакого готового алгоритма, или материала, при помощи которого я бы сам реализовал его (суть методов я понимаю)


Два утверждения противоречат друг другу. Либо понимаете суть, либо не знаете, как построить алгоритм.
Форум предписывает педагогичность и не рекомендует халявы, поэтому давайте по порядку:
1. Что требуется минимизировать в методе наименьших квадратов (формулой)?
2. Как найти минимум функции нескольких переменных?
Ответ на эти два вопроса подскажет Вам, как строить алгоритм.

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:29 
Anton_Peplov в сообщении #1002155 писал(а):
Два утверждения противоречат друг другу. Либо понимаете суть, либо не знаете, как построить алгоритм.
Форум предписывает педагогичность и не рекомендует халявы, поэтому давайте по порядку:
1. Что требуется минимизировать в методе наименьших квадратов (формулой)?
2. Как найти минимум функции нескольких переменных?
Ответ на эти два вопроса подскажет Вам, как строить алгоритм.

Да, ответы на вопросы очевидны :-)
Видимо я недостаточно понимаю суть, для составления алгоритма с нуля. Может у Вас литература на примете есть, в которой этот метод подробно расписан?

Халявы я себе тоже не рекомендую, но если уже где-то есть пример реализации алгоритма, лучше на него буду опираться, чем менее оптимальный код сам напишу. Все равно даже готовый код придется перелопатить, доводя до ума, и халявой там не пахнет.

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:32 
Аватара пользователя
Truedoday в сообщении #1002158 писал(а):
Все равно этот же код придется перелопатить, доводя до уме и халявой там не пахнет.

Так возьмите матлабовский (или он у них в dll засунут)?

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:35 
Аватара пользователя
Truedoday в сообщении #1002158 писал(а):
Да, ответы на вопросы очевидны

Раз очевидны, воспроизведите их.

-- 10.04.2015, 02:42 --

Литературу рекомендовать просто. Е. С. Вентцель. Теория вероятностей. Метод расписан от и до. Но лучше бы все же обсудить и убедиться, что Вы понимаете.

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:51 
Anton_Peplov в сообщении #1002160 писал(а):
Truedoday в сообщении #1002158 писал(а):
Да, ответы на вопросы очевидны

Раз очевидны, воспроизведите их.

Воспроизвести ответы? 1) Сумма квадратов отклонений 2) Равенство частных производных нулю и положительно определенная квадратичная форма.

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

P.S. Книгу сейчас поищу, спасибо.

-- 10.04.2015, 02:53 --

Geen в сообщении #1002159 писал(а):
Truedoday в сообщении #1002158 писал(а):
Все равно этот же код придется перелопатить, доводя до уме и халявой там не пахнет.

Так возьмите матлабовский (или он у них в dll засунут)?


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

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:58 
Аватара пользователя
Truedoday в сообщении #1002164 писал(а):
Он там в виде оконного приложения,

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

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:07 
Аватара пользователя
Записываете сумму квадратов отклонений. Берете от нее частные производные по $A, \omega, \varphi, b$. Приравниваете к нулю. Получаете систему из четырех уравнений с четырьмя неизвестными. Решаете ее, если это возможно. Получаете явные выражения для коэффициентов $A, \omega, \varphi, b$. Пишете код, который вычисляет эти выражения. PROFIT.
Тут главный бес - в решении системы. Далеко не все уравнения решаются аналитически.

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:12 
Geen в сообщении #1002165 писал(а):
Truedoday в сообщении #1002164 писал(а):
Он там в виде оконного приложения,

Нуууу, насколько мне приходилось сталкиваться, интерфейс и алгоритмы у матлаба (как у всех приличных людей) - это разные вещи.... ;-)
Мы друг друга не поняли.
Вот что я имел ввиду:

(Оффтоп)

Изображение

То есть самого алгоритма лицезреть невозможно. А даже если бы был код, то он использует различные встроенные функции, изучение которых приводит к необходимости разбора других функций, изучение которых приводит к необходимости разбора других функций... фрактал, сами понимаете :-) И трудоемкость этого процесса слишком велика.

-- 10.04.2015, 03:26 --

Anton_Peplov в сообщении #1002167 писал(а):
Записываете сумму квадратов отклонений. Берете от нее частные производные по $A, \omega, \varphi, b$. Приравниваете к нулю. Получаете систему из четырех уравнений с четырьмя неизвестными. Решаете ее, если это возможно. Получаете явные выражения для коэффициентов $A, \omega, \varphi, b$. Пишете код, который вычисляет эти выражения. PROFIT.
Тут главный бес - в решении системы. Далеко не все уравнения решаются аналитически.


$f(A, \omega, \varphi, b, x)=A \cdot \sin(\omega \cdot x + \varphi)\cdot e^{-b \cdot x}\cdot x^2$
$n$ - количество точек входных данных
$Y, X$ - массивы входных данных

Вот от этого выражения брать частные производные?
$\sum\limits_{i=1}^{n}(f(A, \omega, \varphi, b, x_i)-Y(i))^2$
И, что вероятнее всего, аналитически ничего не решится. То есть придется реализовывать и алгоритм численного решения системы ДУ прямо внутри алгоритма, или можно как-то это оптимизировать?

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:34 
Аватара пользователя
Truedoday в сообщении #1002169 писал(а):
И трудоемкость этого процесса слишком велика.

Ага, именно так я и подумал... :D ;-)

Но это самый простой/дешёвый процесс, между прочим....

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:40 
Geen в сообщении #1002173 писал(а):
Но это самый простой/дешёвый процесс, между прочим....

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

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:44 
Аватара пользователя
Truedoday в сообщении #1002175 писал(а):
В любом случае не помешает самому разобраться в алгоритме.

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

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 03:34 
Аватара пользователя
Truedoday в сообщении #1002169 писал(а):
Вот от этого выражения брать частные производные?

Да, именно от этого.

Truedoday в сообщении #1002169 писал(а):
или можно как-то это оптимизировать?

Если и можно, то я не знаю, как.

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 15:18 
Anton_Peplov в сообщении #1002185 писал(а):
Truedoday в сообщении #1002169 писал(а):
Вот от этого выражения брать частные производные?

Да, именно от этого.
Но метод Левенберга — Марквардта и заключается решении этой уже составленной системы уравнений. Как его реализовать и есть главная проблема.

 
 
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 16:03 
Гугл по строке «метод Левенберга — Марквардта» даёт примерно 3490. Неужели среди них нет понятного описания?

 
 
 [ Сообщений: 29 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group