Уведомления

Группа в Telegram: @pythonsu

#1 Май 10, 2011 13:33:03

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Есть ли Fit F_i=\sum (k_i*f_i(x))

Есть данные x_1,…x_n F_1,..F_n x_i вектора. Хочу для заданного набора функций f_1(x),f_m(x)
найти коэффициенты наилучшего среднеквадратичного приближения данных
G(x,k)=sum(k_i*f_i(x))
k:argmin_k(sum((G(x_i,k)-F_i)**2))
В scipy есть polyfit - аппроксимация полиномами.
есть scipy.optimize.leastsq - нелинейная аппроксимация любой функции.

А серединку никак не найду, хоть сам пиши. Не знаете как такая штука может называться?



Офлайн

#2 Май 10, 2011 14:40:27

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Есть ли Fit F_i=\sum (k_i*f_i(x))

Плюнул и написал велосипед.
Особенности велосипеда:

class Tfit(object):
def insert(self,x,y,w=1):
""""добавить одну пару x,y"""
....
def Koeff(self):
.....
def add(self,x,y,w=None):
"""добавить много пар x,y"""
def remove(self,x,y,w=1):
if not self.Ok:
self._koeff()
y=self._func[0](x)*self.koeff[0]
for f,k in zip(self._func,self.koeff)[1:]:
y+=f(x)*k
return y
def residual(self,x,y):
"""вычисляем y- sum k_i*f_i(x)"""
def __call__(self,x):
"""получаем решение в заданной точке"""
def clear(self):
""" возвращаемся к состоянию -нет добавленных точек"""
Можно добавить данные - все или добавлять последовательно по мере поступления
Если точка надоела - можно ее убрать



Отредактировано (Май 10, 2011 14:44:43)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version