【问题标题】:gnuplot - nonlinear curve fitting, parameter initialization and boundary definitiongnuplot - 非线性曲线拟合、参数初始化和边界定义
【发布时间】:2021-09-17 00:52:24
【问题描述】:

我正在 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 中这样做。 感谢您的帮助和提示。

【问题讨论】:

  • 倒数第三行有错字吗?这个数字不应该是18000吗?

标签: gnuplot non-linear-regression


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢您的帮助。初始化参数后,拟合确实非常好,不幸的是我正在寻找的参数值(特别是“k1”,“k2”和“b”)应该是正的。是否有可能在适合期间为其他条件建立这一点?我得到以下值: 最终参数集 ======================= k1 = -0.00141587 k2 = 4.37053e-06 a = 1.11483 b = 0.000403388
  • 简而言之:不,据我所知,拟合参数的范围不可用。如果您得到非物理结果,则您的数据可能很糟糕,或者您的模型可能过度拟合或不合适。
猜你喜欢
  • 2016-02-12
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
相关资源
最近更新 更多