Почему я получаю новые значения для определенных переменных? - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь рассчитать сдвиг по кривой. Я определяю свои известные переменные и имею одну неизвестную переменную. Когда я использую logifun c, переменные в моем 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

Почему меняется каждое значение переменных?

1 Ответ

1 голос
/ 05 августа 2020

Вы можете создать вторую функцию, которая исправляет все параметры, кроме 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])
...