用三个变量拟合 gnuplot

Fitting in gnuplot with three variables

我正在尝试使用 gnuplot 拟合一些数据。

这是数据(变量 h、k、l 和 I):

#h  k   l   I

2   1   1   7807
2   2   0   9664
3   2   1   6042
4   0   0   1394
3   3   2   1358
4   2   0   4896

### Function
I(h,k,l) = M * (F * ( (sin(A*pi*sqrt(h*h+k*k+l*l)*L))/(A*2*pi*sqrt(h*h+k*k+l*l)) ))^2

### Initial values
M=1
F=0.5
A=1
L=1

### Fitting 
fit I(h,k,l) "cavendish.data" using 1:2:3 via M, F, A, L

我想从这个拟合中确定常数 M、F、A 和 L。

当我 运行 此代码时,我收到消息 未定义的变量:h

我怎样才能确定变量。提前致谢。

尝试使用最新版本的 gnuplot (>= 5.0),它支持具有两个以上变量的拟合命令(参见 release notes)。另请注意,gnuplot 中的幂运算符是 ** 而不是 ^.

你的例子必须稍微改变才能工作:

### Function
I(h,k,l) = M * (F * ((sin(A*pi*sqrt(h*h+k*k+l*l)*L))/(A*2*pi*sqrt(h*h+k*k+l*l)) ))**2

### Initial values
M=1.0
F=0.5
A=1.0
L=1.0

### Fitting
set dummy h, k, l
fit I(h,k,l) "cavendish.data" using 1:2:3:4 via M, F, A, L