用gnuplot拟合小值时出现问题

用gnuplot拟合小值时出现问题,gnuplot,precision,data-fitting,Gnuplot,Precision,Data Fitting,我会尽力解释我在做什么,并在最后指出我所犯的错误。因此,我有一个包含以下数据的文件: 1.00000000E-05 8.39843750E-02 1.28074971E-02 1.00000000E-06 6.83593750E-02 1.15548433E-02 1.00000000E-07 4.29687500E-02 9.16096828E-03 1.00000000E-08 2.73437500E-02 7.30792458E-03 1.00000000E-09 3.9

我会尽力解释我在做什么,并在最后指出我所犯的错误。因此,我有一个包含以下数据的文件:

1.00000000E-05  8.39843750E-02  1.28074971E-02
1.00000000E-06  6.83593750E-02  1.15548433E-02
1.00000000E-07  4.29687500E-02  9.16096828E-03
1.00000000E-08  2.73437500E-02  7.30792458E-03
1.00000000E-09  3.90625000E-02  8.73464054E-03
1.00000000E-10  2.34375000E-02  6.76582347E-03
1.00000000E-11  1.36718750E-02  5.16748303E-03
1.00000000E-12  1.56250000E-02  5.52427173E-03
我需要试穿一下。我是和你一起做的

datfile = "data.dat"
a = 0.1; b = 0.2
f(x) = a*x**b
fit f(x) datfile u 1:2:3 yerrors via a, b
并获得值
a=0.312672
b=0.116722
。然后我想画点和拟合函数。但是fitting函数在
x=10^-9处“断开”,正如您在这里看到的->。我相信这可能和数字精度有关,但我不知道。我的gnuplot版本是
5.2
,我的绘图代码是

set logscale x
set logscale y
plot datfile u 1:2:3 w yerrorbars, f(x) w lines lw 2

提前谢谢

使用log在数值上更安全:将非线性拟合f(x)=a.x^b替换为线性拟合log(f(x))=b.log(x)+log(a)(拟合形式为Y=b.x+a,使用数据x=log(x)和Y=log(f(x))找到a,b,然后使用a=e^a,b=b)@PicaudVincent,这是一种变通方法。谢谢使用log在数值上更安全:将非线性拟合f(x)=a.x^b替换为线性拟合log(f(x))=b.log(x)+log(a)(拟合形式为Y=b.x+a,使用数据x=log(x)和Y=log(f(x))找到a,b,然后使用a=e^a,b=b)@PicaudVincent,这是一种变通方法。谢谢