我想要拟合以下数据:
70 0.0429065
100 0.041212
150 0.040117
200 0.035018
250 0.024366
300 0.02017
350 0.018255
400 0.015368
下面的函数是指数函数和高斯函数的组合:
$ f(x)= a1*(a2* exp(-x/T2e)+ exp(-(x/T2g)**2))
$ fit f(x) 'data‘,通过a1,a2,T2e,T2g
但它总是给我以下结果:
a1 = 0.0720021 +/- 0.04453 (61.84%)
a2 = 0.310022 +/- 0.9041 (291.6%)
T2e = 63291.7 +/- 2.029e+07 (3.206e+04%)
T2g = 252.79 +/- 32.36 (12.8%)
而当我试着把它完全拟合到
$ g(x)=b* exp(-(x/T2g)**2)
$ fit g(x) 'data‘通过b,T2g
我得到了
b = 0.0451053 +/- 0.001598 (3.542%)
T2g = 359.359 +/- 16.89 (4.701%)
和
$ S(x)=S0* exp(-x/T2e)
$ fit S(x) 'data‘,通过S0,T2e
提供:
S0 = 0.057199 +/- 0.003954 (6.913%)
T2e = 319.257 +/- 38.17 (11.96%)
我已经尝试设置初始值,但没有改变结果。
有人知道哪里出了问题吗?谢谢,
发布于 2019-03-21 03:29:59
好的,你可以看到一个指数衰减和一个驼峰,它可能是高斯的。这种方法,我是如何得到拟合的:首先,排除数据点100和150,拟合指数,然后将高斯近似设置为170。您可能不会得到很好的拟合,因为至少高斯峰值被移动了一些值x1
。
使用以下代码:
### fitting
reset session
$Data <<EOD
70 0.0429065
100 0.041212
150 0.040117
200 0.035018
250 0.024366
300 0.02017
350 0.018255
400 0.015368
EOD
a = 0.055
T2e = 310
b = 0.008
x1 = 170
T2g = 54
Exponential(x) = a*exp(-x/T2e)
Gaussian(x) = b*exp(-((x-x1)/T2g)**2)
f(x) = Exponential(x) + Gaussian(x)
fit f(x) $Data u 1:2 via a,b,x1,T2e,T2g
plot $Data u 1:2 w lp pt 7, f(x) lc rgb "red"
### end of code
你会得到:
a = 0.0535048 +/- 0.00183 (3.42%)
b = 0.00833589 +/- 0.001006 (12.06%)
x1 = 170.356 +/- 5.664 (3.325%)
T2e = 315.114 +/- 12.94 (4.106%)
T2g = 54.823 +/- 12.13 (22.12%)
https://stackoverflow.com/questions/55267591
复制相似问题