بــســم الله الرحمن الرحـيـم - [entries|archive|friends|userinfo]
olegmi

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

[Apr. 17th, 2009|02:44 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
[Tags|]

Когда отчет об одном прогоне программы составил 220 мегабайт, я понял, что надо что-то делать...

Кстати, никто не подскажет методику подбора квадратной функции под заданый график? Т.е. мне не нужно точно. Но чтобы относительно похожие очертания...
LinkLeave a comment

Comments:
From:[info]rybnyj-den.livejournal.com
Date:April 17th, 2009 - 11:10 am
(Link)
Методом наименьших квадратов:

интеграл(сумма) по x от (a*x*x+b*x+c-f(x))^2

ищем минимум по a,b,c дифференцированием

получается система линейных уравнений
[User Picture]
From:[info]olegmi
Date:April 17th, 2009 - 11:19 am
(Link)
> интеграл(сумма) по x от (a*x*x+b*x+c-f(x))^2
Это мне подошло бы. Хотя в квадрате или нет - я не уверен. Возможно, дробная степень. Я предпочел бы поиграть со степенью, если можно...

> ищем минимум по a,b,c дифференцированием
функция сильно зашумленная. Там много всплесков. При том мелкие можно игнорировать, а крупные я буду обрабатывать отдельно и тоже можно игнорировать. Как искать?

> получается система линейных уравнений
Буду примного благодарен, если объсните технологию.
[User Picture]
From:[info]beshenov
Date:April 17th, 2009 - 11:20 am
(Link)
Квадрат --- это потому что минимизируется сумма квадратов отклонений.
[User Picture]
From:[info]olegmi
Date:April 17th, 2009 - 11:25 am
(Link)
Это я понял. Но если метод позволяет, то, возможно, мне редпочтительнее минимизировать сумму в дргой степени, чем 2.
Однако как - я пока не понял. Ваша ссылка определенно по теме, но я еще не упел зачитать. Спасибо.
[User Picture]
From:[info]beshenov
Date:April 17th, 2009 - 11:37 am
(Link)
Метод наименьших квадратов минимизирует квадраты.

Имеется набор значений (x_i, y_i).

Берем f(x) = a*x_i^2 + b*x_i + c, записываем
сумму квадратов разностей между f(x_i) и y_i,

F (a,b,c) = \sum_i (a*x_i^2 + b*x_i + c - y_i)^2.

Чтобы найти минимум, ищем решение уравнений
dF/da = dF/db = dF/dc = 0.

Это будет линейная система.

В принципе, см. любую книжку по статистике.
From:[info]rybnyj-den.livejournal.com
Date:April 17th, 2009 - 11:29 am
(Link)
Да, понятно. Всё не так просто.
Я бы попробовал так: сначала "всплески" срезать, чтобы сгладить функцию (скажем, заменить значение в каждой точке на медианное по некоторой окрестности), а потом приближать все-таки квадратично.
А про уравнения - по ссылке Бешенова написано подробее.
[User Picture]
From:[info]beshenov
Date:April 17th, 2009 - 11:49 am
(Link)
Грубые ошибки обычно отсеиваются по критерию Стьюдента.

t = |x - m| / s,
где m --- выборочное среднее x,
s = 1/(N-1) \sum_{i=1}^N (x_i - m)^2 --- исправленная оценка дисперии.

Если для какого-то наблюдения фактическое значение t превышает
табличное, то такое наблюдение отбрасывается.

http://mathworld.wolfram.com/Studentst-Distribution.html
[User Picture]
From:[info]beshenov
Date:April 17th, 2009 - 11:51 am
(Link)
Здесь "всплески", может быть, не про то, но это тоже полезно.
[User Picture]
From:[info]olegmi
Date:April 17th, 2009 - 12:16 pm
(Link)
Грубые ошибки там сильно расползаются на несколько дискретизаций. Такова природа источника... Там нет обрывных мест. Кривая хоть и зашумлена, но сглажена.
Ее можно подвергнуть конрастированию. Но это повлечет нежелательный взрыв затратности рутинных вычислений на каждую кривую...