【发布时间】:2019-06-02 07:20:24
【问题描述】:
我正在使用 lmfit 将我的数据拟合到高斯。我试图完成三件事: 1) 了解如何在 lmfit 中计算误差 2) 如何在 lmfit 中包含我自己计算的错误 3)如何绘制拟合范围内的错误
def gaussian(x, amp, cen, fwhm):
return + amp * np.exp(-(x - cen) ** 2 / (2 * (fwhm / 2.35482) ** 2))
def gaussian_fit(x,y,guess=[1,0,0,5],varies=[True,True,True,True]):
c = 299792458 #m/s
gmod = Model(gaussian)
gmod.nan_policy = 'omit'
#x,y - your dataset to fit, with x and y values
print (np.max(y))
gmod.set_param_hint('amp', value=guess[0],vary=varies[0])
gmod.set_param_hint('cen', value=guess[1],vary=varies[1])
gmod.set_param_hint('fwhm', value=guess[2],vary=varies[2])
gmod.make_params()
result = gmod.fit(y,x=x,amp=guess[0], cen=guess[1], fwhm=guess[2])
amp = result.best_values['amp']
cen = result.best_values['cen']
fwhm = result.best_values['fwhm']
#level = result.best_values['level']
sigma = fwhm / 2.35482
c = 299792458 #m/s
print(result.fit_report())
gaussfield = amp * np.sqrt(2 * np.pi * sigma ** 2)
residual = y - result.best_fit
print ('params:',amp,cen,fwhm,sigma,gaussfield)
return amp,cen,fwhm,sigma,gaussfield,residual
amp, cen, fwhm, sigma, gaussfield, residual
= gaussian_fit(xdata,ydata,guess=[.1,6.9,.02],varies=[True,False,False])
我没有看到错误在脚本中的位置,那么它们是如何包含在最终报告中的?如何包含您自己的错误而不是来自 lmfit 的错误,以及如何最终绘制这些错误?
【问题讨论】: