Gnuplot配件效果不佳(与KaleidaGraph不同)

时间:2015-01-25 15:30:54

标签: gnuplot data-fitting

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

命令:

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返回m1 = 2.45e14和m2 = 3.64e9,与(大致正确的)初始值相比,这是错误的和巨大的

我尝试在KaleidaGraph(演示版)中使用完全相同的数据集和拟合函数,其中确实返回正确的结果(如下图所示),如果gnuplot不起作用,可以使用此功能,但是我更喜欢使用gnuplot,因为我可以自动化许多数据文件的过程,因为我不相信KaleidaGraphs有一个命令行终端。

KaleidaGraph fit

有谁知道为什么gnuplot会返回如此狂野的值?

(如果它有助于我使用Windows 8.1 x64)

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

1 个答案:

答案 0 :(得分:3)

两件事:Gnuplot进行整数除法,因此必须使用3/2.0来获得正确的指数。

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

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