Я пишу программу на Python, которая будет соответствовать формам Гаусса и Лоренца для некоторых данных резонанса. Первоначально я начал использовать scipy.optimize.leastsq
, но изменил его на использование optimize.curve_fit
, после того как возникли трудности с поиском ошибок в оптимизированных параметрах из матрицы ковариации.Передача дополнительных аргументов с помощью scipy.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
?
спасибо! Отлично работает –