用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,这是一种变通方法。谢谢