在我一直在做的一个项目中,我一直在使用SciPy的**optimize.curve_fit()函数,通过改变3个参数来拟合曲线。其中一个参数(c)需要根据另一个参数(Mhalo)限制在限制范围内,如图here所示。
作为项目的下一步,我想改变这个关系,这样c参数就不会在基于Mhalo的限制内变化,如图所示,c参数在Mhalo-c关系周围具有对数正态分布。
当我试图通过将c从optimize.curve_fit()函数中的变量中取出,并将随机对数正态计算放在我要拟合的函数中来实现这一点时,程序根本无法拟合曲线(可能是因为随机元素)。
有没有什么方法可以实现我在这里描述的,使用optimize.curve_fit()**或Python中的其他函数?
1条答案
按热度按时间5lhxktic1#
已锁定1天。此时有disputes about this answer’s content正在解决。它当前不接受新的交互。
这与我需要一个可以在参数空间内拟合曲线的Python函数有关。它不完全是重复的。
c
和Mhalo
是否为拟合参数?在前面的问题中也提到过,您可能会发现
lmfit
很有帮助。(或者可能不那么简单)其他参数的数学表达式。例如,你可能想把c
约束为Mhalo
的某个函数加上某个有有限界的项,这可能在lmfit
中完成这种东西字符串
这将允许
mhalo
自由变化,允许c_offset
在范围内变化,并将c
约束为这两个参数的函数,这意味着c
可以在拟合中变化,但不能独立于mhalo
和c_offset
。