scipy的曲线拟合生成错误的值

2024-09-28 22:15:48 发布

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

我有几个测量数据,我想把我自己的函数拟合到这些数据上。为此,我想使用curve_fit。因此,我以以下方式实现了它:

def func(self, w, H, T, L):
    B = (L + 0.25)*((2 * math.pi / T)** 4)
    S = (B**L)*H*H / (4 * scipy.special.gamma(L)*(w**( 4 * L + 1)))*numpy.exp(-B / (w*w*w*w))
    return S

def fit_this(self):
    self.popt, self.copt = curve_fit(self.func, self.xdata, self.ydata)
    print self.popt
    print self.copt

self.xdataself.ydata包含我的测量值。我已经在另一个程序(matlab)中使用相同的函数进行了拟合,因此我已经知道了工作参数。但是当启动这个程序时,我得到了popt绝对错误的参数,值的协方差在10e+22的范围内,因此完全没有用。为什么会发生这种情况(猜测:起始值错误),我该如何改善这种情况?如果提供我的数据有帮助,我也可以提供。你知道吗


Tags: 数据函数self程序参数def错误fit