Я пишу программу на Python, которая будет соответствовать формам Гаусса и Лоренца для некоторых данных резонанса. Первоначально я начал использовать scipy.optimize.leastsq
, но изменил его на использование optimize.curve_fit
после трудностей с поиском ошибок в оптимизированных параметрах из матрицы ковариации.
Я определил функцию, чтобы она соответствовала сумме гауссовского и лоренцевого:
def mix(x,*p):
ng = numg
p1 = p[:3*ng]
p2 = p[3*ng:]
a = sumarray(gaussian(x,p1),lorentzian(x,p2))
return a
где p
- массив начальных догадок при параметрах подгонки. Вот пример, где он вызывается с помощью curve_fit
:
leastsq,covar = opt.curve_fit(mix,energy,intensity,inputtot)
В настоящий момент numg
(число гауссовских форм) является глобальной переменной. Может ли он быть включен в curve_fit
в качестве дополнительного аргумента, как это можно сделать с помощью leastsq
?