我已经实现了一种能够同时适应多个数据集的算法 . 它基于这个解决方案:multi fit
目标函数太复杂而无法显示(LaFortune散点模型),因此我将使用解决方案中的目标函数进行解释:
def lor_func(x,c,par):
a,b,d=par
return a/((x-c)**2+b**2)
如果选择导致 lor_func < 0
的参数集 par
,如何惩罚拟合算法 .
从数学的角度来看,目标函数的负值是有效的 . 因此,导致此负目标函数的参数集 par
可能是具有最小错误的解决方案 . 但我想排除这些解决方案,因为它们既不是物理上有效的,
功能如下:
def lor_func(x,c,par):
a,b,d=par
value = a/((x-c)**2+b**
return max(0, value)
由于拟合返回错误数据,因为它也优化了0值,因此不起作用 . 结果将与正确的结果不同 .
1 回答
使用scipy.optimize.least_squares的
bounds
参数?就像我在这里做的那样:Suggestions for fitting noisy exponentials with scipy curve_fit?