我试着用高斯曲线和洛伦兹曲线拟合一组共振数据,但是scipy.optimize.curve U拟合函数返回错误“OptimizeWarning:无法估计参数的协方差”。我需要参数的协方差来计算拟合中的误差-有什么办法可以消除它吗?在
我的代码是:
popt1,pcov1 = opt.curve_fit(gaussianfit, E, I, p0=[E0,I0,sigma])
errorp1 = (pcov1)**0.5
print 'error in gaussian fit =', errorp1
plt.plot(E, gaussianfit(E,*popt1), '-', label='Gaussian Fit')
popt2,pcov2 = opt.curve_fit(lorentzfit, E, I, p0=[E0,I0,gamma])
errorp2 = (pcov2)**0.5
print 'error in combined fit =', errorp2
plt.plot(E, lorentzfit(E,*popt2),'-', label='Lorentzian Fit')
#plot gaussian and lorentzian fits combined
errorp = (pcov1 + pcov2)**0.5
print 'error in lorentzian fit =', errorp #print error
plt.plot(E, (gaussianfit(E,*popt1) + lorentzfit(E,*popt2))/2, '-', `label='Combined fit')
谢谢你的帮助!:)
在我的例子中,为参数
p0
添加合理的初始猜测有助于避免OptimizeWarning
。如果不提供p0
,该算法可能会抛出警告并返回一个所有参数都等于1的数组。在相关问题 更多 >
编程相关推荐