我一直在做一个项目,它使用SciPy的**optimize.curve_fit()函数通过改变3个参数来拟合曲线到一些数据,这一直工作得很好。
但是,我现在需要修改程序,使其中一个参数的边界是另一个参数的函数(例如,当x = 10 ybounds = 1 +/- 0.2,但当x = 11 ybounds = 1.1 +/- 0.2)。到目前为止,我唯一的想法是在第一个函数中放入另一个optimize.curve_fit()**函数,但事实证明这是非常低效的(程序现在需要4小时而不是5分钟)。
有没有其他Python函数可以用来实现这一点?
1条答案
按热度按时间pbpqsu0x1#
您可能会发现lmfit(https://lmfit.github.io/lmfit-py)可以满足您的需求。除其他功能外,
lmfit
允许使用数学表达式约束参数,而无需更改用于对数据建模的函数的细节。举一个简单的例子,可以让一个名为
a
的参数自由变化,而另一个参数b
定义为1-sqrt(a)
。