![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Здравствуйте !
Долго думал где разместить вопрос здесь или в "Алгоритмах", но, т.к. гуглил не меньше пол-дня и ничего конкретного не нашёл, то решил, всё-таки, задать здесь. Итак. Мне нужно апроксимировать функцию двух переменных, заданную таблично
для каждой точки у меня есть "вес" (СКО данного измерения). Хотелось бы получить функцию вида:
чтобы получать одно значение (outApproximatedX;outApproximatedY) в зависимости от предыдущих значений и вновь поступившего измерения. "Вес" (вернее всё-таки СКО) должен работать следующим образом: при минимальном СКО искомая ф-ция должна проходить в непосредственной близости от соответствующей точки, при максимальном СКО данная точка пратически не должна учитываться. Аппроксимация должна быть линейной ( наверное ??? ), т.к. я знаю, что искомая функция - прямая линия. P.S. Большая просьба - не отсылать в гугл для поиска МНК, т.к. я там уже был и не нашёл готового решения. P.P.S. Если кто-нибудь ещё и исходниками такой ф-ции поделится - буду ваще благодарен. Спасибо. Это сообщение отредактировал(а) borisbn - 19.3.2011, 17:18 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
В смысле вопрос уже решен?
Если нет, то пара вопросов. По той сигнатуре что вы привели, это похоже не на функцию 2-ух переменных. А больше похоже на (образно выражаясь) мишень. В которую бьют выстрелами (newMeasuredX, newMeasuredY), и вы хотите получить апроксимированный центр этой мишени, учитывающий все прошлые "выстрелы". Если же это функция, то это подразумевает зависимость y=f(x). То есть задаете х, получаете апроксимированный игрек. Или наоборот x=f(y) Как вы хотите получить сразу два значения? В зависимости от этого будут разные решения. |
|||
|
||||
alexvs11 |
|
|||
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 6 Всего: 10 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
нет. напортачил в первом посте, написал во втором "не отвечайте, пока не исправлю", затем второй удалил... ![]()
не центр, а скорее "куда дальше стрелять". ок, распишу исходную задачу. Есть траектория движения объекта. Известно, что это - прямая, но мне она заранее не известна. Я могу с неким периодом измерять местоположение этого объекта, причём каждое измерение (newMeasuredX, newMeasuredY) сопровождается СКО этого измерения в метрах (newMeasuredWeight). Так вот мне требуется скорректировать это измерение, учитывая несколько предыдущих, при этом необходимо учитывать также СКО предыдущих измерений. ![]() на рисунке:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Ln78 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 25.11.2006 Репутация: 13 Всего: 15 |
Так двух или одной? И гипотеза о прямолинейности абсолютно несомненна, никаких корректировок в движении быть не может? Если так, то самый простой способ решения – именно через МНК. Для равноточных измерений система Ax=b. Если измерения имеют разную точность, и известно их СКО, то каждое из уравнений нужно поделить на дисперсию (квадрат СКО) соответствующего измерения. А решается обычным образом, умножением на транспонированную матрицу. Фактически нужно определить два числа, решить систему уравнений размера 2 на 2. Для такого случая элементарно находится обратная матрица, можно выписывать рекуррентные соотношения. По мне, их проще на бумажке вывести, чем здесь написать (соответствующим образом отформатировав). Это сообщение отредактировал(а) Ln78 - 20.3.2011, 13:45 |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Спасибо всем, кто хотел помочь. Вопрос решён.
Правда на стекОверфлоу, но какая разница ![]() Я там, кстати, в последнем посте (ответе) выложил ссылку на исходники... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |