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%)
我目前正在尝试使用 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%)