lmfit:相对于其他参数的约束参数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lmfit:相对于其他参数的约束参数相关的知识,希望对你有一定的参考价值。
我在设置要适合lmfit的参数的最小值和最大值时遇到麻烦。基本上,我有两个参数a
和b
,它们需要遵循以下约束:
0 < b < 1
0 < a+b < 1
-b < a < 1
尽管前两个很容易实现为:
fit_params.add('b', min = 0, max = 1)
fit_params.add('a_plus_b', min = 0, max = 1)
fit_params.add('a', expr = 'a_plus_b-b')
我现在不知道如何在系统中包含我的第三个条件。您可以提出进一步的建议吗?
非常感谢,狮子座
答案
解决方案非常简单,我应该只在这里阅读lmfit手册:https://lmfit.github.io/lmfit-py/constraints.html
无论如何都将有所帮助,该解决方案是通过在参数表达式中实现if语句来给出的。
fit_params.add('b', min = 0, max = 1)
fit_params.add('a_plus_b', min = 0, max = 1)
fit_params.add('a', expr = 'a_plus_b-b if a_plus_b-b > 0 else 0.')
另一答案
我认为您实际上不需要这里的第三个条件,例如
-b < a < 1
可以重写为
0 < a+b < 1+b
但是自b>0
起,0 < a+b < 1
将始终满足此条件。
但是,为了更笼统地回答这个问题,您可能需要像使用a_plus_b
一样引入另一个“差或和变量”,并使用它。
以上是关于lmfit:相对于其他参数的约束参数的主要内容,如果未能解决你的问题,请参考以下文章