# # wpylib.math.fitting.funcs_physics module # Created: 20150521 # Wirawan Purwanto # # Imported 20150521 from Cr2_analysis_cbs.py # (dated 20141017, CVS rev 1.143). # """ wpylib.math.fitting.funcs_physics module A library of simple f(x) functions for physics-related common functional fitting For use with OO-style x-y curve fitting interface. """ import numpy from wpylib.math.fitting import fit_func_base class FermiDirac_fit_func(fit_func_base): """Fermi-Dirac function object. For use with fit_func function. Functional form: C[0] * (exp((x - C[1]) / C[2]) + 1)^-1 Coefficients: * C[0] = amplitude * C[1] = transition "temperature" * C[2] = "smearing temperature" """ dim = 1 # a function with 1-D domain param_names = ('A', 'F', 'T') # FIXME: Not good yet!!! F_guess = 1.9 T_guess = 0.05 def __call__(self, C, x): from numpy import exp A, F, T = self.get_params(C, *(self.param_names)) y = A * (exp((x[0] - F) / T) + 1)**(-1) self.func_call_hook(C, x, y) return y def Guess_xy(self, x, y): imin = numpy.argmin(y) self.guess_params = (y[imin], self.F_guess, self.T_guess) return self.guess_params