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=60
和 x=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%)
函数是否真正代表基础数据由您决定。
我正在尝试在 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=60
和 x=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%)
函数是否真正代表基础数据由您决定。