为什么我得到指数衰减曲线最佳拟合的直线

问题描述 投票:0回答:1

大家好, 我正在尝试在Python中拟合双指数衰减函数的曲线。我使用的代码如下。我不知道为什么我会得到一条适合的直线。我欢迎对我的代码有任何帮助和建议,这将有很大的帮助。

xData = np.array(xData) 
yData = np.array(yData)
def double_exp(x, a1, t1, a2, t2):
    return a1*np.exp(-x/t1) + a2*np.exp(-(x-0.1) / t2)
mod=Model(double_exp)

result=mod.fit(yData,x=xData,a1=0.7,t1=0.5,a2=0.3,t2=10)
result.plot()
plt.grid()
plt.xlabel('Time')
plt.ylabel('Fluoresence Lifetime')

列表 xData 和 yData 的示例数据值为

[![xData is \[2.50783699e-09 5.01567398e-09 7.52351097e-09 1.00313480e-08
 1.25391849e-08 1.50470219e-08 1.75548589e-08 2.00626959e-08
 2.25705329e-08... etc\]
yData is \[ 1025.  1032.  1101.  1138.  1205.  1086.  1692. 13515. 59434. 82067.64293. 52266. 43993. 35335. 30066. 29989. 33773. 30521. 26468. 26338.27233. 26276. 24109....etc\]][1]][1]
python curve-fitting exponential lmfit
1个回答
3
投票

您可能会得到一条直线,因为您的初始值不够接近,无法进行细化。

使用 lmfit 时,您绝对必须为要优化的所有参数提供实际的初始值。在任何情况下都不能忽视这一点。如果您不太确定初始值是否合理,请在尝试拟合之前使用初始参数值绘制数据和模型。进行拟合时,您断言您知道初始值是近似数据的合理值。 推论:当你给它不合理的初始值时,它无法找到一个好的解决方案,这并不是算法或库的错误。这应该是预料之中的。

试穿后,务必打印并阅读试穿报告。这包含了主要结果。由此产生的拟合图可能很有用——正如人们所说,一张图片胜过一千个文字。但拟合结果包含了拟合结果的表格,一张数字抵得上一千张图片。让我再说一遍:务必打印并实际阅读适合报告。请勿发布有关未包含此报告的 lmfit 结果的问题。

© www.soinside.com 2019 - 2024. All rights reserved.