我正在尝试使用from scipy.optimize import curve_fit
对数据进行sinc平方函数拟合。这是我目前掌握的代码:
def sincsquared(intensity0,slitwidth,x,wavelength,f):
return intensity0*(np.sinc((slitwidth*x)/(wavelength*f)))**2
guessintensity0=max(intensity)
guessslitwidth=slitwidth
guesswavelength=670*10**(-9)
guessf=500
p0=[guessintensity0,guessslitwidth,guesswavelength,guessf]
fit=curve_fit(sincsquared,x,intensity,p0=p0)
print("The fit parameters are: ", fit[0])
datafit=sincsquared(x, *fit[0])
plt.xlabel("x/mm")
plt.ylabel("Intensity/mW m**(-2)")
plt.plot(x,datafit,color="red", label="data fit")
plt.plot(x,intensity,color="blue", label = "Original")
plt.grid()
plt.legend(loc="upper left")
plt.show()
这是绘图的图像:Plot
我相信代码是正确的,只是因为某些原因,配件出现了可怕的错误,所以我可以知道这里的问题是什么吗?图中的sinc平方函数实际上并不与x轴相交,所以这可能是原因吗?如果是这样的话,我该怎么办?还是我最初的猜测是错的
注意:滑动宽度为1.9*10^(-5)
目前没有回答
相关问题 更多 >
编程相关推荐