为什么我得到定义变量的新值?

Why do I get new values for defined variables?

我正在尝试使用曲线拟合来计算位移。我定义了我的已知变量并且有一个未知变量。当我使用 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])