Passer des arguments supplémentaires en utilisant scipy.optimiser.ajustement de la courbe?
j'écris un programme en Python qui adaptera les formes gaussiennes et Lorentziennes à certaines données de résonance données. J'ai commencé à utiliser scipy.optimize.leastsq
mais changé en utilisant optimize.curve_fit
après avoir eu de la difficulté à extraire les erreurs des paramètres optimisés de la matrice de covariance.
j'ai défini une fonction pour ajuster une somme de gaussien et Lorentzien:
def mix(x,*p):
ng = numg
p1 = p[:3*ng]
p2 = p[3*ng:]
a = sumarray(gaussian(x,p1),lorentzian(x,p2))
return a
où p
est un tableau des conjectures initiales aux paramètres d'ajustement. Voici l'exemple où il est appelé à l'aide de curve_fit
:
leastsq,covar = opt.curve_fit(mix,energy,intensity,inputtot)
pour le moment numg
(le nombre de formes gaussiennes) est une variable globale. Est-il de toute façon qu'il peut être incorporé dans curve_fit
comme argument supplémentaire à la place, comme on peut le faire avec <!--8?
1 réponses
la grande chose au sujet de python est que vous pouvez définir des fonctions qui retournent d'autres fonctions, essayez de lancer:
def make_mix(numg):
def mix(x, *p):
ng = numg
p1 = p[:3*ng]
p2 = p[3*ng:]
a = sumarray(gaussian(x,p1),lorentzian(x,p2))
return a
return mix
et
leastsq, covar = opt.curve_fit(make_mix(numg),energy,intensity,inputtot)