| |
[Apr. 17th, 2009|02:44 pm] |
Когда отчет об одном прогоне программы составил 220 мегабайт, я понял, что надо что-то делать...
Кстати, никто не подскажет методику подбора квадратной функции под заданый график? Т.е. мне не нужно точно. Но чтобы относительно похожие очертания... |
|
|
| Comments: |
Методом наименьших квадратов:
интеграл(сумма) по x от (a*x*x+b*x+c-f(x))^2
ищем минимум по a,b,c дифференцированием
получается система линейных уравнений
![[User Picture]](http://lj.rossia.org/userpic/92408/17892) | | From: | olegmi |
| Date: | April 17th, 2009 - 11:19 am |
|---|
| | | (Link) |
|
> интеграл(сумма) по x от (a*x*x+b*x+c-f(x))^2 Это мне подошло бы. Хотя в квадрате или нет - я не уверен. Возможно, дробная степень. Я предпочел бы поиграть со степенью, если можно...
> ищем минимум по a,b,c дифференцированием функция сильно зашумленная. Там много всплесков. При том мелкие можно игнорировать, а крупные я буду обрабатывать отдельно и тоже можно игнорировать. Как искать?
> получается система линейных уравнений Буду примного благодарен, если объсните технологию.
Квадрат --- это потому что минимизируется сумма квадратов отклонений.
![[User Picture]](http://lj.rossia.org/userpic/92408/17892) | | From: | olegmi |
| Date: | April 17th, 2009 - 11:25 am |
|---|
| | | (Link) |
|
Это я понял. Но если метод позволяет, то, возможно, мне редпочтительнее минимизировать сумму в дргой степени, чем 2. Однако как - я пока не понял. Ваша ссылка определенно по теме, но я еще не упел зачитать. Спасибо.
Метод наименьших квадратов минимизирует квадраты.
Имеется набор значений (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.
Это будет линейная система.
В принципе, см. любую книжку по статистике.
Да, понятно. Всё не так просто. Я бы попробовал так: сначала "всплески" срезать, чтобы сгладить функцию (скажем, заменить значение в каждой точке на медианное по некоторой окрестности), а потом приближать все-таки квадратично. А про уравнения - по ссылке Бешенова написано подробее.
Грубые ошибки обычно отсеиваются по критерию Стьюдента. 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]](http://lj.rossia.org/userpic/92408/17892) | | From: | olegmi |
| Date: | April 17th, 2009 - 12:16 pm |
|---|
| | | (Link) |
|
Грубые ошибки там сильно расползаются на несколько дискретизаций. Такова природа источника... Там нет обрывных мест. Кривая хоть и зашумлена, но сглажена. Ее можно подвергнуть конрастированию. Но это повлечет нежелательный взрыв затратности рутинных вычислений на каждую кривую... | |