python - 如何拟合 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)
解决方案
推荐阅读
- git - git branch 不输出任何值
- webhooks - 使用谷歌助手/谷歌主页自动打开 URL
- vba - 如何调整弯头连接器的宽度?
- html - Why following Bootstrap columns fail when using img inside a column?
- javascript - 如何在 Scrapy 的“yield”中设置异常?
- reactjs - Redux Thunk 同步动作不同步
- r - 用分组变量中的值替换 NA
- excel - 为什么这个公式在引用的工作表中不起作用?
- java - java中每个单词的首字母大写仅使用子字符串lower和upper方法
- android - Android 低功耗蓝牙堆栈和 24 位 CRC 计算