如何在python环境下进行带约束的加权曲线拟合?

2024-04-28 17:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要做一个有约束和权重的曲线拟合。在这里阅读,我创建了一个函数

 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测试了函数本身,它工作得很好。在


Tags: 函数selfreturniffloatinf权重err
1条回答
网友
1楼 · 发布于 2024-04-28 17:34:37

了解如何调用此例程可能会有所帮助,self.k0和自我总部功能. 在

目的是什么

    hq = lambda n,kappa,ag: self.hq_func(n,1,kappa,ag)
    return (hq(n,kappa,ag) - h)/err**2

与之相反

^{pr2}$

是吗?在

一般来说,在很多情况下,p[0]值的变化会改变残差。这使得很难确定导数,这很可能导致不稳定的结果。返回Inf肯定会引起麻烦。在

如果想法是对参数可能接受的值设置上限和/或下限,您可能会发现lmfit包(http://lmfit.github.io/lmfit-py/)很有用。在

相关问题 更多 >