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
8077
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
4321
Truedoday в сообщении #1002158 писал(а):
Все равно этот же код придется перелопатить, доводя до уме и халявой там не пахнет.

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

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


20/08/14
8077
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
4321
Truedoday в сообщении #1002164 писал(а):
Он там в виде оконного приложения,

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

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


20/08/14
8077
Записываете сумму квадратов отклонений. Берете от нее частные производные по $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
4321
Truedoday в сообщении #1002169 писал(а):
И трудоемкость этого процесса слишком велика.

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

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

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


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

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

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


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

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

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


20/08/14
8077
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
4115
Владивосток
Гугл по строке «метод Левенберга — Марквардта» даёт примерно 3490. Неужели среди них нет понятного описания?

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

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



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

Сейчас этот форум просматривают: Google [Bot]


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

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