【发布时间】:2015-07-10 18:36:49
【问题描述】:
有没有办法限制 gnuplot 拟合参数的取值?
f(x) = A/(x**2) + B/(x**4)
A = 1
B = 0.01
fit f(x) 'data.dat' u 1:2 via A,B
我知道B < 0 没有任何意义。有没有办法强加B > 0?
【问题讨论】:
标签: gnuplot curve-fitting
有没有办法限制 gnuplot 拟合参数的取值?
f(x) = A/(x**2) + B/(x**4)
A = 1
B = 0.01
fit f(x) 'data.dat' u 1:2 via A,B
我知道B < 0 没有任何意义。有没有办法强加B > 0?
【问题讨论】:
标签: gnuplot curve-fitting
由于 gnuplot 支持非线性拟合,您可以在函数中使用 B**2(或 sqrt(B**2))将变量约束为正数。
【讨论】:
你可以把你的函数改成这样:
minB = 0.001
f(x) = A*x**-2 + (B<minB:minB:B)*x**-4
但我不确定 NLLS 算法对此有何反应。小心。
或者你可能会想到这样的事情:
f(x) = A*x**-2 + 10**B*x**-4
这可能会反应更顺畅,更接近数据的实际物理模型。
【讨论】: