Gnuplot 拟合效果不佳(与 KaleidaGraph 不同)

Gnuplot fitting not working well (Unlike KaleidaGraph)

我目前正在尝试使用 gnuplot 使用下面的命令来拟合一个简单的数据集,但是尽管包括了很好的初始猜测,我还是没有运气。

命令:

gnuplot> f(x) = 1/(2*pi) * 1/m1 * 1/(b + x**2)**(-3/2)
gnuplot> m1 = 150
gnuplot> m2 = 17
gnuplot> fit f(x) "data.txt" using 1:2 via m1, m2

数据(x:y):

2   1.2643E-05
3   7.90515E-06
4   5.67976E-06
5   4.70381E-06
6   3.65957E-06
7   2.69824E-06
8   2.06054E-06
9   1.52311E-06
10  1.0627E-06
11  7.88733E-07
12  5.89984E-07
13  4.70111E-07
14  3.62744E-07
15  2.48113E-07
16  1.84463E-07
17  1.28446E-07
18  1.09519E-07
19  9.40524E-08
20  8.20673E-08

然而,gnuplot returns m1 = 2.45e14 和 m2 = 3.64e9 与(大致正确的)初始值相比,它们根本不正确且巨大

我尝试在 KaleidaGraph(演示版)中使用完全相同的数据集和拟合函数,确实 return 正确的结果(如下图所示)并且可以如果 gnuplot 不起作用,请使用它,但是我更愿意使用 gnuplot,因为我将能够自动处理许多数据文件,因为我不相信 KaleidaGraphs 有命令行终端。

有谁知道为什么 gnuplot returning 如此疯狂的值?

(如果有帮助,我正在使用 Windows 8.1 x64)

非常感谢所有帮助, 詹姆斯

两件事:Gnuplot 做整数除法,所以你必须使用 3/2.0 来得到正确的指数。

其次,gnuplot 中的函数与 KaleidaGraph 中使用的函数不同:指数必须为正数 (3/2.0) 并且您必须在 b 处使用 m2

f(x) = 1/(2*pi) * 1/m1 * 1/(m2 + x**2)**(3/2.0)
m1 = 150
m2 = 17
fit f(x) "data.txt" using 1:2 via m1,m2

这给出:

...
Final set of parameters            Asymptotic Standard Error
=======================            ==========================

m1              = 127.11           +/- 11.31        (8.898%)
m2              = 18.1347          +/- 1.54         (8.492%)