gnuplot 在函数评估期间适合未定义的值

gnuplot fit undefined value during function evaluation

我有数据文件:

10.0000 -330.12684910
15.0000 -332.85109334
20.0000 -333.85785274
25.0000 -334.18315783
30.0000 -334.28078907
35.0000 -334.30486903
40.0000 -334.30824069
45.0000 -334.30847874
50.0000 -334.30940105
55.0000 -334.31091085
60.0000 -334.31217217

用于适应这个的命令

f(x) = a+b*exp(c*x)
fit f(x) datafile via a, b, c

没有得到我预期的负指数,然后只是为了看看我试过的双曲线如何拟合

f(x) = a+b/x 
fit f(x) datafile via a, b

但决定这样做:

f(x) = a+b*exp(-c*x)
fit f(x) datafile via a, b, c

它奏效了。我继续做适合,但在某些时候它开始在函数评估期间将此错误标记为未定义值。 我重新启动会话并删除了 fit.log 文件,我认为这是一个 gnuplot 错误,但从那以后我总是收到未定义值错误。我一直在阅读类似的问题。它可能是 abc 种子,但我引入了与收到的非常相似的值,当时它很适合但没有用。我在想这个问题可能是混乱的或者我做错了什么。

我不知道gnuplot 使用的算法。可能是从参数的猜测值开始的迭代方法。困难可能来自不方便的初始值 and/or 来自过程的不收敛。

根据我自己的计算,结果接近于以下值。该方法不是迭代的,不需要初始猜测,在论文中有解释:https://fr.scribd.com/doc/14674814/Regressions-et-equations-integrales

信息:

回归的线性化是通过积分方程得到的

要拟合的函数是解。

上面引用的论文主要是用法语写的。它被翻译成:https://scikit-guess.readthedocs.io/en/latest/appendices/references.html

谢谢你的方法。我了解 gnuplot 使用非线性最小二乘法进行拟合。
我发现一种解决方案是使用模型 y=a+b*exp(-c*c*x),我还发现了更好的初始值并且它起作用了。无论如何,我还有这个其他数据集:
2 -878.11598213
6 -878.08846509
10 -878.08105262
19 -878.07882425
28 -878.07793702
44 -878.07755010
60 -878.07738151
85 -878.07729504
110 -878.07725107
gnuplot fit 可以完成工作,但确实很糟糕。相反,我使用了你的方法,在这里我展示了一个比较: gnuplot fit and jjaquelin comparison

好多了。