如何拟合sinc平方函数?

2024-09-28 13:24:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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)


Tags: 函数代码pltfitcurveintensityp0wavelength

热门问题