python 使用lmfit向拟合模型添加约束

mu0hgdu0  于 2022-12-10  发布在  Python
关注(0)|答案(1)|浏览(240)

我想使用lmfit拟合一个模型。该模型有两个参数c和c1。对于这些参数,我有三个约束条件(0〈=c〈=1)(-1〈=c1〈=0)和(1+c1-c〉0)。如何将这些约束条件合并到我的模型中?
我尝试了以下方法:

params = lmfit.Parameters()
params.add("c1", value = -0.5, min = -1, max = 0)
params.add("constraint", value = 0.5, min = 0, max = 1)
params.add("c", expr = "1+c1-constraint", min = 0, max = 1)

在这个例子中,c1和1+c1-c的约束被遵守,但是c的约束在拟合中没有被遵守。每当约束没有被遵守时,c的输出正好是0,这在我的拟合中产生了问题。我应该怎么办?

6jjcrrmo

6jjcrrmo1#

我可能会把它写成

params = lmfit.Parameters()
params.add("c1", value=0, min=-1, max=0) # (-1<=c1<=0) 
params.add("delta", value=0.5, min=0)   # (1+c1+delta = c, delta>0)
params.add("c", expr="1+c1+delta", min=0, max=1) # (0<=c<=1)

你觉得这样对吗?

相关问题