# Interface pour optimize. Source : http://www.scipy.org/Cookbook/FittingData from scipy import optimize from numpy import * class Parameter: def __init__(self, value): self.value = value def set(self, value): self.value = value def __call__(self): return self.value def fit(function, parameters, y, x = None): def f(params): i = 0 for p in parameters: p.set(params[i]) i += 1 return y - function(x) if x is None: x = arange(y.shape[0]) p = [param() for param in parameters] optimize.leastsq(f, p) ## On fitte deux paraboles 2D en ce point (bloc 2*(npfit)+1**2) #npfit = 2 # Changer le first guess si npfit change... #a = Parameter(-6.25E-5) #b = Parameter(2.5E-4) #c = Parameter(0.9995) #def f(x): return a()*x**2 + b()*x + c() #fit(f, [a,b,c], cor_prod[x_max-npfit:x_max+npfit+1,y_max]) #x_par = -1*b()/(2*a()) #fit(f, [a,b,c], cor_prod[x_max,y_max-npfit:y_max+npfit+1]) #y_par = -1*b()/(2*a()) #