我有一个名为'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")
谁能解释我为什么?是否存在语法错误?我已经用 Origin(在 Windows 上)拟合了这条曲线,没有出现任何问题。为什么 gnuplot 会给我这个奇怪的错误?感谢!
这是一个浮点数问题。
您不初始化拟合参数,因此 gnuplot 选择默认值a=b=c=1
。现在exp(x*b)
评估指数函数会产生巨大的值,这导致(浮点)无穷大和马夸特-莱文伯格拟合算法中的NaN
。
尝试初始化拟合参数,尤其是b
,例如b=0.001
。