用gnuplot拟合指数函数的困难

用gnuplot拟合指数函数的困难,gnuplot,curve-fitting,data-fitting,Gnuplot,Curve Fitting,Data Fitting,我有一个名为“dataset.txt”的文件,其中包含这些数据 #Temperature (K) - Pressure (kPa) 310.2 5.349 315.6 6.682 320.2 8.015 325.2 10.681 330.2 14.680 335.2 17.346 340.2 22.678 345.2 28.010 350.2 34.675 355.2 44.006 360.2 52.004 365.2 62.668 370.2 73.332 我必须用指数形式拟合数据给出的曲

我有一个名为“dataset.txt”的文件,其中包含这些数据

#Temperature (K) - Pressure (kPa)

310.2 5.349
315.6 6.682
320.2 8.015
325.2 10.681
330.2 14.680
335.2 17.346
340.2 22.678
345.2 28.010
350.2 34.675
355.2 44.006
360.2 52.004
365.2 62.668
370.2 73.332
我必须用指数形式拟合数据给出的曲线

f(x) = a * exp(x * b) + c
所以我用数字

f(x) = a*exp(x*b) + c
fit f(x) 'dataset.txt' u 1:2 via a, b, c
但我得到了一个类型错误

Current data point
=========================
#               = 1 out of 13
x               = nan            
z               = 5.349          

Current set of parameters
=========================
a               = nan            
b               = nan            
c               = 1              

     Function evaluation yields NaN ("not a number")
谁能解释一下原因吗?有语法错误吗?我已经用原点(在Windows上)拟合了这条曲线,没有出现任何问题。为什么gnuplot会给我这个奇怪的错误?
谢谢

这是一个浮点数问题

您不初始化拟合参数,因此gnuplot选择默认值
a=b=c=1
。计算指数函数
exp(x*b)
现在会产生巨大的值,从而导致Marquardt-Levenberg拟合算法中的(浮点)无穷大和
NaN


尝试初始化拟合参数,尤其是
b
,例如
b=0.001

哇,谢谢,这解决了我的问题。我只初始化了
b
。。。但我还是不明白重点。顺便说一下,非常感谢!