![]() |
|
![]() ![]() ![]() |
|
Lutfen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.12.2007 Репутация: нет Всего: нет |
Есть таблично заданные данные:
Xi=[0,20, ..., 360] Yi=[1261,1204,993,654,321,-236,-580,-1050,-1302,-1406,-1350,-1139,-800,-373,105,534,804,1157,1261] Если построить график, то получается синусоида. Как мне ее правильно аппроксимировать, методом МНК, используя функцию sinX ? |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
для МНК функцию надо представить как
y = a*f(x)+b, где a, b - коэффициенты которые определит МНК, f - известная функция соответственно тут y = a sin(x) + b значит надо найти {Ti} = {sin(Xi)} затем применить линейный регрессионный анализ к точкам {Ti} и {Yi} В Excel'е это функция ЛИНЕЙН(), если надо - в справке к ней написаны формулы которые она использует. |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 3 Всего: 8 |
GoldFinch правильно подсказал, что если линеаризировать, то будет проще всего (и екселем можно будет проверить).
Lutfen, если нужны другие варианты (перед преподом, например, извилины растопырить) - то вот: 1) можно записать МНКшный критерий типа Сумма[(y-y')^2], т.е. сумма (по всем эталонным парам "аргумент-значение") квадратов ошибок аппроксимации, продифференцировать этот критерий по параметрам идентифицируемой функции, приравнять производные к нулю и решить систему уравнений. 2) с некоторым малым шагом топать вдоль вектора антиградиента (градиент - вектор частных производных, в данном случае, МНКшного критерия, антиградиент - градиент со знаком "минус") до тех пор, пока не придем в минимум критерия (где первые производные равны нулю). Будет ли минимум глобальным или локальным - будет зависеть от вида оптимизируемой функции (при y=a*sin(x)+b все минимумы вроде должны быть глобальными, а вот если вводим еще и частоту-фазу, т.е. y=a*sin(zx+w)+b, то могут появиться и локальные минимумы). |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
del.
Это сообщение отредактировал(а) GoldFinch - 1.4.2010, 16:18 |
|||
|
||||
Lutfen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.12.2007 Репутация: нет Всего: нет |
То есть, я так понимаю, нахожу коэффициенты а и b как для линейной регрессии
b=[n*Sum(Y*X)-Sum(X)*Sum(Y)]/[n*Sum(X^2)-Sum(X)^2]; a=[Sum(Y)-b*Sum(X)]; Затем подставляю в функцию Y(x)=a*sin(x)+b и у меня должно получится моя синусоида? Добавлено через 6 минут и 16 секунд VictorTsaregorodtsev, а можно про второй вариант более подробно(по проще в понимании), так как в первым вариантом у меня не получается моя синусоида, выходит прямая((( |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Можно тупо Экселем... см. аттач. Главное - правильно подобрать начальные значения.
Присоединённый файл ( Кол-во скачиваний: 48 ) ![]() -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
||||
|
||||
Lutfen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.12.2007 Репутация: нет Всего: нет |
Сделал так, получилось не то... ![]() Присоединённый файл ( Кол-во скачиваний: 20 ) ![]() |
|||
|
||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Lutfen, У тебя не sin(x), а cos(x).
|
|||
|
||||
Lutfen |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 6.12.2007 Репутация: нет Всего: нет |
Подскажите где можно найти информацию об этом!!! ну очень нужно....
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |