Gnuplot:函数评估期间的未定义值

Gnuplot: undefined value during function evaluation

我正在尝试在 Gnuplot 上拟合函数 f(x)=exp(a*x)。它一直给我错误 'undefined value during function evaluation'。我使用以下代码:

y(x)=exp(a*x)
a = 60

fit y(x) 'data.txt' using 1:2 via a
plot y(x), 'data.txt' using 1:2 notitle

错误来自上述代码的第四行。我已经正确设置了目录,但它没有包含在上面的代码中。 我哪里错了?

假设您的数据如下所示:

8,701 1032,000 1025,000 
9,701 974,000 963,000
...
26,701 609,000 603,000

首先,默认情况下,gnuplot 期望十进制数字用“.”书写。作为小数点。要更改此设置,请使用:

set decimalsign ','

其次,对你的问题来说更重要的是,gnuplot 在内部使用 double precision numbers。他们上升到大约 1e308。在拟合的第一次迭代中,有像 exp(a*x)a=60x=26 这样的计算,结果是 exp(1560) = 3e677 - 太大了,因此出现错误消息。

第三,一个指数函数 f(x) = exp(a*x)f(0) = 1 开始并为正 a 递增,您的数据从 f(0) > 1000 开始并递减。因此我会尝试这样的设置:

set decimalsign ','

y(x)=b*exp(-a*x)
a = 0.1
b = 1000

fit y(x) 'data.txt' using 1:2 via a,b
plot y(x), 'data.txt' using 1:2 notitle

结果:

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = 0.0286709        +/- 0.0005953    (2.076%)
b               = 1256.51          +/- 12.12        (0.9647%)

函数是否真正代表基础数据由您决定。