如何提高gnuplot中双缝衍射的拟合度?

如何提高gnuplot中双缝衍射的拟合度?,gnuplot,physics,data-fitting,Gnuplot,Physics,Data Fitting,我写这段代码是为了在我的测量数据上拟合双缝衍射的强度方程。问题在于拟合图与测量数据的曲线图不成正比。 测量数据是一个txt文件,如下所示: 0 0 10224 1 1.00048851978505 10460 ... 1050 1050.5129457743 59573 ... 2047 2048 10518 我尝试使用尽可能多的变量,以提供拟合函数选项,使其与绘图对齐,并为变量提供良好的起始值,但拟合仍然不在测量数据点附近,尽管它似乎形状正确。函数winkel(x)用于将测量的x值(第二个

我写这段代码是为了在我的测量数据上拟合双缝衍射的强度方程。问题在于拟合图与测量数据的曲线图不成正比。 测量数据是一个txt文件,如下所示:

0 0 10224 
1 1.00048851978505 10460
...
1050 1050.5129457743 59573
...
2047 2048 10518
我尝试使用尽可能多的变量,以提供拟合函数选项,使其与绘图对齐,并为变量提供良好的起始值,但拟合仍然不在测量数据点附近,尽管它似乎形状正确。函数winkel(x)用于将测量的x值(第二个垂直列)从像素转换为弧度,因为强度Int(x)的公式是针对弧度的,我使用2048像素宽的相机传感器测量了干涉图的宽度

set title "Intensity"
set xlabel "pixels"
set ylabel "tics"
#d slit distance
#a slit width
#b proportional constant
#c,g moves the center of the fit function
#lambda wave length of the light
#Int(x) intensity function
#k maximum distraction angle thats still on the screen and measured
pi = 3.14159
lambda = 632.816e-9
winkel(x) = -k+2*k*(x+g)/2048
beta(x) = (pi*d/lambda)*sin(winkel(x))
alpha(x) = (pi*a/lambda)*sin(winkel(x))
f(x)=b*(cos(beta(x))**2) * ((sin(alpha(x))/alpha(x))**2)+c
a=0.0006
d=0.0002
b=60000
c=10000
g=50
k=0.002
fit f(x) "...\\2ohnefilter.txt" using 2:3 via a,b,c,d,g,k
plot "...\\2ohnefilter.txt" using 2:3 , f(x)
拟合函数应与测量数据的绘图一样高和宽,我如何实现这一点?
提前感谢。

诀窍是手动缩小变量的起始值,直到几乎不再需要拟合为止。无论如何,谢谢你。 如果有人认为k是最重要的相关变量


如果我应该删除问题而不是自己回答,很抱歉,那么请删除此问题。

您好,始终允许它回答您自己的问题;你甚至可以自己接受这是正确的答案。然而,这可能是重复的,因为归结起来,非线性拟合通常需要良好的起始参数。如果你能通过提供相关参数的自动猜测来改进你的答案会更好。虽然你已经解决了你的问题,但你能提供合理的数据子集来重现问题吗。同时也要努力使你的代码成为