Код: Выделить всё
def to_minimize(params, x, y, uncertainties=None):
x0 = params["x0"]
ampl0 = params["ampl0"]
ampl = params["ampl"]
sig = params["sig"]
model = lorentzian(x, x0, ampl0, ampl, sig)
if uncertainties is not None:
return (y- model) / uncertainties
else:
return y - model
params = lmfit.Parameters()
params.add("x0", value=guess[0], min=guess[0] - 1000, max=guess[0] + 1000)
params.add("ampl0", value=guess[1], min=0)
params.add("ampl", value=guess[2], min=0)
params.add("sig", value=guess[3], min=0)
out = lmfit.minimize(to_minimize, params, args=(x_data, y_data))
Код: Выделить всё
Fit Result
Fit Statistics
fitting method leastsq
# function evals 156
# data points 51201
# variables 4
chi-square 9.8949e-23
reduced chi-square 1.9327e-27
Akaike info crit. -3149414.19
Bayesian info crit. -3149378.82
Parameters
name value initial value min max vary
x0 2424682.92 2424725.9731872166 2423725.97 2425725.97 True
ampl0 1.6720e-13 1.6717888361052836e-13 0.00000000 inf True
ampl 1.2557e-12 1.2557626695414776e-12 0.00000000 inf True
sig 105.300229 4.296879768371582 0.00000000 inf True
Моя версия lmfit — 1.3.2, а numdifftools — 0.9.41. Версия Python 3.11.7
Если невозможно получить их в качестве выходных данных, можете ли вы предложить способ их вычисления вручную? Спасибо большое
Подробнее здесь: https://stackoverflow.com/questions/787 ... -minimizer