我一直在开发一个项目,该项目使用 SciPy 的 optimize.curve_fit() 函数通过改变 3 个参数来将曲线拟合到某些数据,该项目运行良好。
但是,我现在需要更改程序,以便其中 1 个参数的边界是另一个参数的函数(例如,当 x = 10 ybounds = 1 +/- 0.2 时,但当 x = 11 ybounds = 1.1 +/- 0.2 时) )。到目前为止,我唯一的想法是在第一个函数中放入另一个 optimize.curve_fit() 函数,但事实证明这效率非常低(程序现在需要约 4 小时而不是 5 分钟)。
我可以使用任何其他 Python 函数来完成此任务吗?
您可能会发现 lmfit (https://lmfit.github.io/lmfit-py) 适合您想要做的事情。除其他功能外,
lmfit
允许根据其他参数使用数学表达式来约束参数,而无需更改用于对数据建模的函数的细节。
作为一个简单的示例,您可以让一个名为
a
的参数自由变化,并将另一个参数 b
定义为 1-sqrt(a)
。