Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scipy的曲线拟合生成错误的值_Python_Curve Fitting - Fatal编程技术网

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

Python scipy的曲线拟合生成错误的值,python,curve-fitting,Python,Curve Fitting,我有几个测量数据,我想把我自己的函数拟合到这些数据上。为此,我想使用曲线拟合。因此,我以以下方式实施它: 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)

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

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的范围内,因此完全没有用。为什么会发生这种情况猜测:错误的起始值,我如何才能改善这种情况?如果提供我的数据有帮助,我也可以提供它们。

什么是self.multiFit?既然你已经猜到了不好的初始值可能是原因:你尝试过使用更好的初始值吗?@aganders3:对不起,那是另一次尝试,在opYes中更正了它,这很有效,但是有没有一种方法比简单地通过反复试验获得更好的初始值呢?