我的一个朋友在 gnuplot 中发现了一些关于简单多项式拟合的奇怪行为 有人可以解释一下吗?
这是文件:
#!/usr/bin/gnuplot -p
f(x) = B*(x**4) + A
fit f(x) "data.txt" using ($1+273.14):2 via A, B
plot "data.txt" using ($1+273.14):2 notitle,\
f(x) notitle
数据是:
# content of data.txt
350 3.856
330 3.242
290 2.391
250 1.713
210 1.181
170 0.763
130 0.437
结果图是绿线。蓝线显示使用基本相同形式的另一个函数的拟合效果要好得多。对于绿线,A 被一个常数值代替(A = 0.2123,大约是 B*300^4)
所以绿线显然不是这里的最佳拟合,因为f(x) = B*(x**4) - 0.2123
产生的结果要好得多,并且也是 B*x 4 + A 的形式。在绿色拟合中,参数 **A 被 gnuplot 简单地忽略,并且拟合算法保持不变。为 A 和 B 设置不同的初始值似乎没有多大帮助 - A 的值永远不会改变它的初始值。我和我的朋友正在使用 Ubuntu 附带的标准 Gnuplot 版本:gnuplot 4.4 patchlevel 3。