大家好, 我正在尝试在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]
您可能会得到一条直线,因为您的初始值不够接近,无法进行细化。
使用 lmfit 时,您绝对必须为要优化的所有参数提供实际的初始值。在任何情况下都不能忽视这一点。如果您不太确定初始值是否合理,请在尝试拟合之前使用初始参数值绘制数据和模型。进行拟合时,您断言您知道初始值是近似数据的合理值。 推论:当你给它不合理的初始值时,它无法找到一个好的解决方案,这并不是算法或库的错误。这应该是预料之中的。
试穿后,务必打印并阅读试穿报告。这包含了主要结果。由此产生的拟合图可能很有用——正如人们所说,一张图片胜过一千个文字。但拟合结果包含了拟合结果的表格,一张数字抵得上一千张图片。让我再说一遍:务必打印并实际阅读适合报告。请勿发布有关未包含此报告的 lmfit 结果的问题。