如何在Gnuplot中拟合对数曲线?

如何在Gnuplot中拟合对数曲线?,gnuplot,Gnuplot,我在Gnuplot文件中有一些代码,用于曲线拟合,当前用于直线: f(x) = m * x + b fit f(x) "data.txt" using "Days":"Data" via m, b 这非常有效,但数据看起来更适合对数曲线。因此,我尝试了以下方法: f(x) = b + m * log(x) fit f(x) "data.txt" using "Days":"Data" via m, b 这将导致以下错误: line 46: unknown type in real() 我做

我在Gnuplot文件中有一些代码,用于曲线拟合,当前用于直线:

f(x) = m * x + b
fit f(x) "data.txt" using "Days":"Data" via m, b
这非常有效,但数据看起来更适合对数曲线。因此,我尝试了以下方法:

f(x) = b + m * log(x)
fit f(x) "data.txt" using "Days":"Data" via m, b
这将导致以下错误:

line 46: unknown type in real()

我做错了什么?

我也有类似的问题。在半对数图上,我的数据集很小(8点)。当我试着去适应的时候,我也收到了`

real()中的未知类型`


我改变了最初的参数估计,一切正常。希望这会有所帮助。

不确定
fit
的内部工作原理,但如果
x
出现负值,
log(x)
会变成一个复数,
fit
可能无法处理(假设
gnuplot
s
log()
实现甚至适用于负数,而不是返回“域错误”或其他类似情况)…@twalberg谢谢。x对我来说永远不会是负数。有没有办法约束它?如果你能避免的话,拟合非多项式通常是个坏主意。如果您的数据看起来像一个日志,那么尝试拟合一个线性函数,但使用预处理的数据,例如
拟合a*x+b“数据”,使用(log($1)):2通过a、b
或类似的方式。如果您想在这里更好地帮助您解决实际问题,请显示您的数据。