gnuplot - 非线性曲线拟合、参数初始化和边界定义

gnuplot - nonlinear curve fitting, parameter initialization and boundary definition

我正在 Gnuplot 中尝试 NLCF。我的问题是如何为以下形式的函数设置边界和初始化参数:

g (x) = k1*x**(0.5) + k2*x + a*(1-exp(-b*x));

我正在寻找数据的“k1”、“k2”、“a”和“b”的值:

x y
0 0
60 0.04959
300 0.1405
600 0.21488
900 0.27273
1200 0.35537
2400 0.59917
3000 0.72727
3600 0.82645
5400 0.92975
7200 0.97107
9000 0.98347
10800 0.9876
12600 0.9876
16200 0.9876
18000 1.02066
23400 1.00413
27000 1

不幸的是,我得到了可能没有意义的负值。我试图为参数设置边界(即 k1、k2、a、b> 0),但我不能在 Gnuplot 中这样做。 感谢您的帮助和提示。

要初始化变量,只需在拟合之前定义它们。您应该为拟合收敛选择合理的起始猜测;我通过以下猜测得到了相当不错的结果:

k1=1e-9
k2=1e-9
a=1
b=5e-4

我绘制了你的数据点和函数并不断尝试不同的起始值,直到函数看起来不错,然后 运行 适合。