2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

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

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



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 11:42 


23/11/09
130
Здравствуйте.
Пару дней назад я решил задачу аппроксимации данных выражением вида:
$F(x)=a_0\sin(x)+a_1$
Искомые параметры: $a_0$ и $a_1$
http://dxdy.ru/topic55472.html
Теперь я хочу усложнить задачу и искать решение для общего случая:
$F(x)=A\sin(\omega x+\varphi )+C$
Искомые параметры:
A и С - Амплитуда и Постоянная составляющая, как и в предыдущей задаче
$\omega$ и $\varphi$ - частота колебаний и начальная фаза
Так же использую МНК составляю нормальные уравнения.
Первое из 4х уравнений по параметру A выглядит следующим образом:
$\frac{\partial }{\partial A}\sum_{i=0}^{N}\left [ A\sin(\omega i+\varphi )+C-F_i \right ]^2 =$
$=2\sum_{i=0}^{N}\left [ A\sin(\omega i+\varphi)+C-F_i \right ]\sin( \omega i+ \varphi )$
в итоге:
$A\sum_{i=0}^{N}\sin(\omega i+\varphi )^2 + C\sum_{i=0}^{N}\sin(\omega i+\varphi )=\sum_{i=0}^{N}F_i\sin(\omega i+\varphi )$
Правильно ли я продифференцировал?
Как дальше выделить все коэффициенты при неизвестных по отдельности чтобы составить первую строку матрици А и найти неизвестные по формуле $X=A^{-1}B$?
Подскажите пожалуйста как быть в данной ситуации.

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 12:26 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Думается мне, что те коэффициенты, которые Вы ищите есть коэффициенты Фурье. Попробуйте для начала $F(x)=a_0+a_1\cos(\omega x)+b_1\sin(\omega x)$. Когда будут найдены коэффициенты $a_1$ и $b_1$ можно будет по стандартной процедуре перейти к виду $A\sin(\omega x+\varphi)$.

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 12:52 


23/11/09
130
Поясните пожалуйста подробнее ход мыслей.
Я не понял вот какой момент. Допустим я буду искать решение в виде котором предложили вы, я столкнусь с той же проблемой где в выражении $a_1\cos($\omega$x)$ - $a_1$ и $\omega$ неизвестные, я несмогу разнести их по отдельным ячейкам матрици А (чтобы потом их найти применив $X=A^{-1}B$)
Или я что то не так понял?

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 13:03 
Заслуженный участник
Аватара пользователя


18/05/06
13437
с Территории
Э нет, если так, то всё получится нелинейно и сложно.

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 13:31 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Ну я то имел ввиду, что $\omega$ выбрана из каких-либо других соображений, например, исходя из того, что вы имеете один период данных или оценена каким-либо иным методом. А так, чую, не получится у вас СЛАУ и матриц. Если очень надо, думаю, можно попробовать минимизировать сумму квадратов отклонений численно в том же маткаде.

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 13:40 


23/11/09
130
Уважаемые форумчане есть ли у вас какие либо соображения, как можно аппроксимировать данные функцией $F(x)=A\sin(\omega x+\varphi )+C$, где A,C,w и фи неизвестные, по возможности не применяя никаких оптимизаторов типа генетического алгоритма, поисков и тд?

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 13:52 


29/09/06
4552
Нелинейную задачу (МНК с итерациями и уточнением искомых параметров), хотите попробовать-повозиться?

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 13:57 
Аватара пользователя


21/01/09
3923
Дивногорск
logout2d в сообщении #542204 писал(а):
по возможности не применяя никаких оптимизаторов типа генетического алгоритма, поисков и тд?

А к чему такое стремление так сильно усложнить себе жизнь?

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 14:55 


23/11/09
130
Я вообще не стремлюсь усложнять себе жизнь :-)
Просто цель состоит в создании программы, у меня конечно есть генетический алгоритм и другие методы, но хотелось бы как то попроще решить задачу, чтобы меньше ресурсов компьютера использовать и сократить время расчета.

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 15:38 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Со временем выполнения нынче проблем почти не бывает.
Один из вариантов: При каждом фиксированном значении частоты искомые коэффициенты есть коэффициенты Фурье. Теперь вы начинаете перебирать с некоторым шагом значения частоты, задав некий диапазон возможных значений, исходя, например, из значения периода дискретизации (или предоставив это сделать пользователю ориентируясь на природу аппроксимируемых данных). При каждом значении частоты находите коэффициенты Фурье, определяете сумму квадратов отклонений и находите частоту соответствующую минимуму. Потом можно повторить процедуру на более мелкой сетке для частоты. Это я к тому, что можно попытататься прийти к численной минимизации с одним параметром.

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 15:59 


23/11/09
130
Это подходящий вариант, спасибо за идею.
А как быть с начальной фазой колебания $\varphi$?

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение24.02.2012, 20:49 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
$$A\sin(\omega t+\varphi)=A\sin(\varphi)\cos(\omega t)+A\cos(\varphi)\sin(\omega t)=a_1\cos(\omega t)+b_1\sin(\omega t)$$ где $a_1=A\sin(\varphi)$, $b_1=A\cos(\varphi)$
И обратно: если найдены $a_1$ и $b_1$, то $A=\sqrt{a_1^2+b_1^2}$, а $\varphi$ выражается более сложным образом в зависимости от конкретных значений $a_1$ и $b_1$. В частном случае, когда они отличны от нуля $\varphi=\frac {\pi} {2}(1-sign(b_1))+\arctg(\frac {a_1}{b_1})$. (Рекомендую это проверить)

Аппроксимирующую функцию при заданной частоте $\omega$ представляем в виде: $$F_a(x)=a_0+a_1\cos(\omega x)+b_1\sin(\omega x).$$ Вводим меру качества аппроксимации $$\varepsilon=\sum\limits_{i=0}^{N-1}(a_0+a_1\cos(\omega x_i)+b_1\sin(\omega x_i)-F_i)^2.$$ Ищем коэффициенты из условий $$\frac {\partial\varepsilon}{\partial a_0}=0$$ $$\frac {\partial\varepsilon}{\partial a_1}=0$$ $$\frac {\partial\varepsilon}{\partial b_1}=0$$ Получится СЛАУ.

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение25.02.2012, 13:15 


23/11/09
130
На днях попробую, спасибо за ясное объяснение.

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение26.02.2012, 17:36 


23/11/09
130
profrotter, спасибо алгоритм работает, но у меня еще один вопрос.
Если говорить о комплексных числах, я впервые вижу такую формулу нахождения аргумента:
$\varphi=\frac {\pi} {2}(1-sign(b_1))+\arctg(\frac {a_1}{b_1})$
Во всех источниках я встречал просто арктангенс:
$\varphi=\arctg(\frac {a_1}{b_1})$
откуда взялось $\frac {\pi} {2}(1-sign(b_1))$ ? Где я могу про это почитать?

 Профиль  
                  
 
 Re: Помогите пожалуйста составить уравнения для аппроксимации
Сообщение26.02.2012, 22:42 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Изображение

Согласен. В некоторых учебниках неаккуратно пишут, что аргумент комплексного числа это арктангенс отношения мнимой части к действительной. В более аккуратных учебниках говорят, что аргумент - это угол наклона вектора, изображающего комплексное число, к действительной оси и определяется аргумент $\varphi$ комплексного числа $z=a+ib$ системой уравнений $$\cos(\varphi)=\frac a {|z|}$$ $$\sin(\varphi)=\frac b {|z|}$$
Решение этой системы не всегда этот самый злополучный арктангенс. Тут надо рассмотреть несколько случаев.
1) $a>0,b>0$, то есть $a=|a|,b=|b|$. Тогда, как видно из рисунка, аргумент $$\varphi_1=\arctg\left(\frac b a\right)=\arctg\left(\frac {|b|} {|a|}\right).$$
2) $a<0,b<0$, то есть $a=-|a|,b=-|b|$. Попробуем при этом аргумент посчитать как просто арктангенс: $$\varphi_2=\arctg\left(\frac b a\right)=\arctg\left(\frac {|b|} {|a|}\right)=\varphi_1.$$ Уже из рисунка видно, что полученный результат неверный. Да и без рисунка неверный, ибо мы получили, что два противоположных комплексных числа равны друг другу. В то же время из рисунка видно, что $$\varphi_2=\pi+\varphi_1=\pi+\arctg\left(\frac b a\right).$$ Непосредственной подстановкой можем убедиться, что аргументы $\varphi_1$ и $\varphi_2$ соответствуют двум противоположным числам.
3) $a>0,b<0$, то есть $a=|a|,b=-|b|$. Аргумент $$\varphi_3=-\varphi_1=-\arctg\left(\frac {|b|}{|a|}\right)=\arctg\left(-\frac {|b|}{|a|}\right)=\arctg\left(\frac b a\right).$$
4) $a<0,b>0$, то есть $a=-|a|,b=|b|$. Аргумент $$\varphi_4=\pi+\varphi_3=\pi-\varphi_1=\pi-\arctg\left(\frac {|b|}{|a|}\right)=\pi+\arctg\left(-\frac {|b|}{|a|}\right)=\pi+\arctg\left(\frac b a\right).$$
Таким образом $$
\arg(z)=\left\{ \begin{array}{l}
\arctg\left(\frac b a\right), a>0\\
\pi +\arctg\left(\frac b a\right), a<0
\end{array} \right=\frac {\pi}{2}(1-sign(a))+\arctg\left(\frac b a\right)
$$ Отдельно надо посмотреть случаи когда $a$ или $b$ равны нулю.

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

Думаю участникам темы (в том числе и мне) будет интересно посмотреть на результаты аппроксимации, которые у вас получились. Показали бы картинки.

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

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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