我需要做一个有约束和权重的曲线拟合。在这里阅读,我创建了一个函数
def residuals_ga(self,p,h,n,err,kkind=None):
# checking if to use the minimum or maximum value of kappa
if kkind == "min":
kappa = self.k0[0] - self.k0[1]
elif kkind == "max":
kappa = self.k0[0] + self.k0[1]
# checking if kappa is in bounds
elif p[0] > self.k0[0] + self.k0[1]:
return float("inf")
elif p[0] < self.k0[0] - self.k0[1]:
return float("inf")
else:
kappa = p[0]
ag = float(p[1])
hq = lambda n,kappa,ag: self.hq_func(n,1,kappa,ag)
return (hq(n,kappa,ag) - h)/err**2
据我所知,这应该行得通。然而,结果非常糟糕。这个方法对吗?我错过什么了吗?在
我应该提到,我使用xmgrace测试了函数本身,它工作得很好。在
了解如何调用此例程可能会有所帮助,self.k0和自我总部功能. 在
目的是什么
与之相反
^{pr2}$是吗?在
一般来说,在很多情况下,p[0]值的变化会改变残差。这使得很难确定导数,这很可能导致不稳定的结果。返回Inf肯定会引起麻烦。在
如果想法是对参数可能接受的值设置上限和/或下限,您可能会发现lmfit包(http://lmfit.github.io/lmfit-py/)很有用。在
相关问题 更多 >
编程相关推荐