Estoy escribiendo un programa en Python que se adaptará a formas gaussianas y lorentzianas a algunos datos de resonancia dados. Originalmente comencé a usar scipy.optimize.leastsq
pero cambié a usar optimize.curve_fit
después de tener dificultades para recuperar los errores en los parámetros optimizados de la matriz de covarianza.Pasando argumentos adicionales usando scipy.optimize.curve_fit?
he definido una función para adaptarse a una suma de Gauss y de Lorentz:
def mix(x,*p):
ng = numg
p1 = p[:3*ng]
p2 = p[3*ng:]
a = sumarray(gaussian(x,p1),lorentzian(x,p2))
return a
donde p
es una matriz de las aproximaciones iniciales en los parámetros de ajuste. Aquí es la instancia donde se le llama usando curve_fit
:
leastsq,covar = opt.curve_fit(mix,energy,intensity,inputtot)
Por el momento numg
(el número de formas de Gauss) es una variable global. ¿Hay alguna manera de que se pueda incorporar en curve_fit
como un argumento extra en su lugar, como se puede hacer con leastsq
?
Gracias tanto! Funcionó perfectamente –