python - Python 的 Lmfit 包没有收敛到有意义的结果
问题描述
我正在运行下面的代码:
import numpy as np
from lmfit import Model
def exp_model(x, ampl1=1.0, tau1=0.1):
exponential = ampl1*np.exp(-x/tau1)
return exponential
x = np.array([2.496,2.528,2.56,2.592,2.624])
y = np.array([8774.52,8361.68,7923.42,7502.43,7144.11])
dec_model = Model(exp_model, nan_policy='propagate')
results = dec_model.fit(y, x=x, ampl1=y[0])
results.plot()
我得到的结果是
这意味着拟合只是由于某种原因而失败。我不知道为什么。它以前曾用于类似的数据。任何帮助将不胜感激。
解决方案
它没有收敛,因为 tau1 参数的初始值与实际值相差太远。下面的代码运行良好。
import numpy as np
from lmfit import Model
def exp_model(x, ampl1=1.0, tau1=1.0): # The initial value of tau1 was changed from 0.1 to 1.0
exponential = ampl1*np.exp(-x/tau1)
return exponential
x = np.array([2.496,2.528,2.56,2.592,2.624])
y = np.array([8774.52,8361.68,7923.42,7502.43,7144.11])
dec_model = Model(exp_model, nan_policy='propagate')
results = dec_model.fit(y, x=x, ampl1=y[0])
results.plot()
推荐阅读
- javascript - javascript表格对齐
- sql - SQL - 从另一个表中选择 * 给定计数
- python - 如何使用 miniconda 在 Linux 上安装 chempy?
- symfony - 级联上的“Upsert”多对多关系持续存在
- java - jCuda / 稀疏矩阵转置和乘法
- python - 不按降序时间序列排序的滚动平均值
- docker - 由于某些(隐藏)原因,无法启动 Docker 守护进程
- angular - kendo 在构建不同主题时抛出错误
- postgresql - 函数返回空表
- javascript - 递归:如果 Divider 不除数 --> Divider 增加一,直到 divider === number