我有几个测量数据,我想把自己的功能放到这个数据上。为此,我想使用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.xdata
和self.ydata
包含我的测量值。我已经在另一个程序(matlab)中使用相同的函数进行了拟合,因此我已经知道了工作参数。但是当启动这个程序时,我得到popt
绝对错误的参数,并且值的协方差在10e+22
的范围内,因此完全没用。为什么会发生这种情况(猜测:错误的起始值),我该如何改善这种情况?如果提供我的数据也有助于我提供它们。