首页 > 解决方案 > 如何拟合 sinc 平方函数?

问题描述

我正在尝试将 sinc 平方函数拟合到我的数据中from scipy.optimize import curve_fit,用于我的数据分析。这是我到目前为止的代码:

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()

这是情节的图像:情节

我相信代码是正确的,只是由于某种原因,配件出现了可怕的错误,所以我可以知道问题出在哪里吗?图中的 sinc 平方函数实际上并没有与 x 轴相交,所以这可能是原因吗?如果是这种情况,那么我该怎么办?还是我最初的猜测是错误的?

NB Slitwidth 为 1.9*10^(-5)

标签: pythonpython-3.x

解决方案


推荐阅读