首页 > 解决方案 > 全局拟合与 lmfit 中的变量有关的参数约束

问题描述

这个问题我已经看过好几次了。但是对于这个例子,我没有实现解释的技术:herehere。这是我自己的错还是这个配件不同,我不知道。开始。

我想要拟合的函数的一个简单版本是y = (1-(x/chi)**beta)**(1/beta)(1) where chi = xi*(k**alpha). 其中xy是变量,chi, k, xi, beta, alpha是参数。

现在 (1) 当然在 时给出 NaN 值x / chi > 1。我的问题是:如何对每个 x 的 chi 大于 x 实施这种约束? 在数据中,x 的值严格增加,例如[0.1, 0.15, 0.2, 0.3, 0.5]。我想出的一个想法是将参数分配给每次拟合x_max的最大值。x但我未能将该参数连接到alpha. 我的代码是:

def model(x, k, alpha, beta, xi):
     chi = xi*(k**alpha)
     y = (1 - (x/chi_fit)**beta)**(1/beta)
     return y

params = Parameters()
params.add('k', value=5, vary=False)
params.add('beta', value=1.16, min=1.1, max=1.2)
params.add('xi', value=1.3, min = 1.1, max=1.5)
params.add('x_max', value = max(x[i]), max=10, vary=True)
params.add('alpha', expr = '')

非常感谢任何帮助。

标签: pythonlmfit

解决方案


推荐阅读