2014 dxdy logo

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

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




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


25/02/15
38
Здравствуйте!

Есть некоторая экспериментальная зависимость, описываемая известной функцией. Для ясности, это функция $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 
Заслуженный участник
Аватара пользователя


20/08/14
8071
Truedoday в сообщении #1002152 писал(а):
Мне не удается найти никакого готового алгоритма, или материала, при помощи которого я бы сам реализовал его (суть методов я понимаю)


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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:29 


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

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

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:32 
Заслуженный участник
Аватара пользователя


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

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:35 
Заслуженный участник
Аватара пользователя


20/08/14
8071
Truedoday в сообщении #1002158 писал(а):
Да, ответы на вопросы очевидны

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

-- 10.04.2015, 02:42 --

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 01:51 


25/02/15
38
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 
Заслуженный участник
Аватара пользователя


01/09/13
4318
Truedoday в сообщении #1002164 писал(а):
Он там в виде оконного приложения,

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:07 
Заслуженный участник
Аватара пользователя


20/08/14
8071
Записываете сумму квадратов отклонений. Берете от нее частные производные по $A, \omega, \varphi, b$. Приравниваете к нулю. Получаете систему из четырех уравнений с четырьмя неизвестными. Решаете ее, если это возможно. Получаете явные выражения для коэффициентов $A, \omega, \varphi, b$. Пишете код, который вычисляет эти выражения. PROFIT.
Тут главный бес - в решении системы. Далеко не все уравнения решаются аналитически.

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:12 


25/02/15
38
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 
Заслуженный участник
Аватара пользователя


01/09/13
4318
Truedoday в сообщении #1002169 писал(а):
И трудоемкость этого процесса слишком велика.

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

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:40 


25/02/15
38
Geen в сообщении #1002173 писал(а):
Но это самый простой/дешёвый процесс, между прочим....

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 02:44 
Заслуженный участник
Аватара пользователя


01/09/13
4318
Truedoday в сообщении #1002175 писал(а):
В любом случае не помешает самому разобраться в алгоритме.

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 03:34 
Заслуженный участник
Аватара пользователя


20/08/14
8071
Truedoday в сообщении #1002169 писал(а):
Вот от этого выражения брать частные производные?

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

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

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 15:18 


25/02/15
38
Anton_Peplov в сообщении #1002185 писал(а):
Truedoday в сообщении #1002169 писал(а):
Вот от этого выражения брать частные производные?

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

 Профиль  
                  
 
 Re: Алгоритм МНК
Сообщение10.04.2015, 16:03 
Заслуженный участник


16/02/13
4110
Владивосток
Гугл по строке «метод Левенберга — Марквардта» даёт примерно 3490. Неужели среди них нет понятного описания?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group