Math 如何使用GNUplot获得更好的指数拟合?
我正在尝试将我的数据拟合到这条曲线:Math 如何使用GNUplot获得更好的指数拟合?,math,gnuplot,curve-fitting,data-fitting,chi-squared,Math,Gnuplot,Curve Fitting,Data Fitting,Chi Squared,我正在尝试将我的数据拟合到这条曲线: f(x) = b + n*exp(-x/u) fit f(x) "data1" using 2:3 via b,n,u 我得到的拟合与理论不符: 然后,我使用了理论上的初始参数,在不重新计算拟合的情况下,我得到了一个更好的结果 如果我重新计算拟合,它会在第一次迭代后忽略我的初始参数,并返回到第一个结果 我尝试了几件事。我将FIT_限制降低了20个数量级,但它没有改变任何东西。我也会对数据进行偏差,这样我会在前几个数据点上增加更多权重,然后得到更好的拟合,
f(x) = b + n*exp(-x/u)
fit f(x) "data1" using 2:3 via b,n,u
我得到的拟合与理论不符:
然后,我使用了理论上的初始参数,在不重新计算拟合的情况下,我得到了一个更好的结果
如果我重新计算拟合,它会在第一次迭代后忽略我的初始参数,并返回到第一个结果
我尝试了几件事。我将FIT_限制降低了20个数量级,但它没有改变任何东西。我也会对数据进行偏差,这样我会在前几个数据点上增加更多权重,然后得到更好的拟合,但仍然很糟糕
这是输出:
问题:
f(x) = b + n*exp(-x/u)
fit log(f(x)) "data1" using 2:(log($3)) via b,n,u
如果较大的值主导拟合,则此技巧通常有效,因为它们与拟合曲线的偏差在对数域中的权重较小。这似乎还不是你的情况,但可能是在你解决第1点之后你凭什么认为这件衣服不合身?你需要的不仅仅是你的视觉和主观印象 以下是您假定的功能:
y = b + n*exp(-x/u)
z = y-b = n*exp(-x/u)
尝试安装此功能:
y = b + n*exp(-x/u)
z = y-b = n*exp(-x/u)
取双方的天然原木:
ln(z) = ln(n*exp(-x/u)) = ln(n) - x/u
这是一个简单的线性回归,因变量x
,自变量ln(z)
,截距ln(n)
,斜率-1/u
问题是,您的数据在x=0时似乎是渐近的。这对我来说是一个1/x
形式的函数。也许不合适与功能的选择有关
你说的是“理论”。这些数据代表什么现象?有一种。Gnuplot能够进行非常好的非线性拟合 我不推荐线性化方法:在计算机之前使用的笔和纸的方法,在这种方法中,只有毫米纸上对数点的直线图是由尺子绘制的,系数是从纸上读取的。我们不必用老方法做事,因为老老师只知道这种方法。让我们利用计算机的能力 让我们建议对系数进行一些初始猜测的非线性回归
f(x) = b + n*exp(-x/u)
b = -5
n = 1.5
u = 15
fit log(f(x)) "data1" using 2:3 via b,n,u
plot "data1" using 2:3 with points, f(x) with line
根据数据中的数据调整常数,即使猜测置信区间和协方差矩阵,也能获得直接结果。谢谢!事实上,这只是在开始其余设置之前转动计数器的人工制品!我完全错过了。听起来你应该接受Wrzlprmft的答案,而不是我的。