python - 全局拟合与 lmfit 中的变量有关的参数约束
问题描述
这个问题我已经看过好几次了。但是对于这个例子,我没有实现解释的技术:here 和here。这是我自己的错还是这个配件不同,我不知道。开始。
我想要拟合的函数的一个简单版本是y = (1-(x/chi)**beta)**(1/beta)
(1) where chi = xi*(k**alpha)
. 其中x
和y
是变量,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 = '')
非常感谢任何帮助。
解决方案
推荐阅读
- ruby-on-rails - 如何使用 svelte + rails/webpacker 设置自定义元素
- laravel - Laravel:从单选按钮获取和组合值
- python - 在数组中每个索引的左侧/右侧查找 Argmin
- python - 显示值和信息
- python - 为什么 Decimal(0) 的科学格式与 float 0 不同?
- php - 如何从 wordpress 中的分类中获取帖子?
- c++ - 链接到 .a 库时未定义的引用
- reactor-netty - UDPServer 和加入多播组的任何示例?
- ruby-on-rails - 似乎无法提交 collection_select 并接收 Unpermitted 参数::hero_id
- amazon-web-services - 如何解决 AWS 托管的 Apache Zeppelin 中缺少的 Glue 模块?