为什么要为定义的变量获取新值



我正在尝试用曲线拟合来计算偏移。我定义了我的已知变量,并有一个未知变量。当我使用logifunc时,p0中的变量不是定义的已知值。相反,我为每个变量获取一个新值。

Vergleich2['Wind']=Vergleich2.index
x2=Vergleich2.T.iloc[7]
y2=Vergleich2.T.iloc[6]
A2=popt[0]
b2=popt[1]
k2=popt[2]
off2=popt[3]
def logifunc(x2,A2,b2,k2,x0,off2):
return A2 / (1 + b2 * np.exp(k2 * (x2+x0)))+off2
x_data2 = Vergleich2['Wind']
popt2, pcov2 = curve_fit(logifunc, x2,y2,p0 = [A2,b2,k2,2,off2])
my popt is: 
100.589
449.427
-0.695534
0.0554911
the popt2 output is:
100.204
846.734
-0.767603
0.517314
0.393996

为什么变量的每个值都会改变?

您可以创建第二个函数来修复除x0:之外的所有参数

def logifunc(x2,A2,b2,k2,x0,off2):
return A2 / (1 + b2 * np.exp(k2 * (x2+x0)))+off2
def logifunc_x0(x2,x0):
return A2 / (1 + b2 * np.exp(k2 * (x2+x0)))+off2
popt2, pcov2 = curve_fit(logifunc_x0, x2, y2, p0=[2])

最新更新