如何解决Gnuplot:函数评估期间未定义的值
我正在尝试在 Gnuplot 上拟合函数 f(x)=exp(a*x)。它一直给我错误“函数评估期间未定义的值”。我使用以下代码:
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
错误来自上述代码的第四行。我已经正确设置了目录,但它没有包含在上面的代码中。 我哪里出错了?
解决方法
假设您的数据如下所示:
v1beta1
首先,默认情况下,gnuplot 期望十进制数用“.”书写。作为十进制符号。要更改此设置,请使用:
8,701 1032,000 1025,000
9,701 974,000 963,000
...
26,701 609,000 603,000
第二,对您的问题更重要的是,gnuplot 在内部使用 double precision numbers。他们上升到大约 set decimalsign ','
。在拟合的第一次迭代中,有 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
由您决定函数是否真正代表底层数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。