适合 gnuplot 和非线性函数的问题
Problems to fit with gnuplot and non-linear function
我有这组数据想要使用函数 f(x) = exp(A+ B/(x-x0))
与 gnuplot 匹配,其中 A
、B
和 x0
是我要匹配的参数集
# x f(x)
0.382 8.29023731095968
0.509 6.36124122026352
0.637 4.66938977764103
0.764 3.3194714217965
0.891 2.15140777817893
1.019 1.15428884806615
1.146 0.262232461832655
我已经用
试过了
fit log(f(x)) 'data.dat' using 1:(log()) via A, B, x0
也已将函数定义为 f(x) = A+ B/(x-x0)
并尝试使用
fit f(x) 'data.dat' using 1:(log()) via A, B, x0
然后是plot exp(f(x))
代码有效,但拟合参数不正确,因为当我绘制曲线和点在一起时没有意义。这对 gnuplot 来说太复杂了吗?
如果函数不合适或起始值可能会使拟合过程难以收敛,拟合可能会失败。
在你的情况下,我猜 x0
是一个重要的参数。您应该稍微帮助一下 gnuplot 拟合算法,以便有机会找到合理的值。在这里,我猜 x0=1.5
是一个合理的起始值。如果这还不够,并且您的模型允许,您可能希望添加额外的变量或项以获得更好的拟合。
代码:
### fitting with appropriate starting values
reset session
$Data <<EOD
0.382 8.29023731095968
0.509 6.36124122026352
0.637 4.66938977764103
0.764 3.3194714217965
0.891 2.15140777817893
1.019 1.15428884806615
1.146 0.262232461832655
EOD
A = 1
B = 1
x0 = 1.5
f(x) = exp(A + B/(x-x0))
set fit nolog
fit f(x) $Data u 1:2 via A,B,x0
plot $Data u 1:2 w lp pt 7 ti "Data",\
f(x) w l lc rgb "red" ti "Fit"
### end of code
结果:
Final set of parameters Asymptotic Standard Error
======================= ==========================
A = 4.61445 +/- 0.3907 (8.466%)
B = 3.57094 +/- 0.8876 (24.86%)
x0 = 1.80616 +/- 0.1371 (7.593%)
我有这组数据想要使用函数 f(x) = exp(A+ B/(x-x0))
与 gnuplot 匹配,其中 A
、B
和 x0
是我要匹配的参数集
# x f(x)
0.382 8.29023731095968
0.509 6.36124122026352
0.637 4.66938977764103
0.764 3.3194714217965
0.891 2.15140777817893
1.019 1.15428884806615
1.146 0.262232461832655
我已经用
试过了fit log(f(x)) 'data.dat' using 1:(log()) via A, B, x0
也已将函数定义为 f(x) = A+ B/(x-x0)
并尝试使用
fit f(x) 'data.dat' using 1:(log()) via A, B, x0
然后是plot exp(f(x))
代码有效,但拟合参数不正确,因为当我绘制曲线和点在一起时没有意义。这对 gnuplot 来说太复杂了吗?
如果函数不合适或起始值可能会使拟合过程难以收敛,拟合可能会失败。
在你的情况下,我猜 x0
是一个重要的参数。您应该稍微帮助一下 gnuplot 拟合算法,以便有机会找到合理的值。在这里,我猜 x0=1.5
是一个合理的起始值。如果这还不够,并且您的模型允许,您可能希望添加额外的变量或项以获得更好的拟合。
代码:
### fitting with appropriate starting values
reset session
$Data <<EOD
0.382 8.29023731095968
0.509 6.36124122026352
0.637 4.66938977764103
0.764 3.3194714217965
0.891 2.15140777817893
1.019 1.15428884806615
1.146 0.262232461832655
EOD
A = 1
B = 1
x0 = 1.5
f(x) = exp(A + B/(x-x0))
set fit nolog
fit f(x) $Data u 1:2 via A,B,x0
plot $Data u 1:2 w lp pt 7 ti "Data",\
f(x) w l lc rgb "red" ti "Fit"
### end of code
结果:
Final set of parameters Asymptotic Standard Error
======================= ==========================
A = 4.61445 +/- 0.3907 (8.466%)
B = 3.57094 +/- 0.8876 (24.86%)
x0 = 1.80616 +/- 0.1371 (7.593%)