Ошибка «Не правильный массив с плавающей точкой» при использовании числовой модели в scipy.optimize.curve_fit - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь приспособить числовую модель к данным, используя sp.optimize.curve_fit, чтобы найти мои свободные параметры, но я получаю ошибку «Результат от вызова функции не является правильным массивом с плавающей точкой». (это где-то в sp.optimize.curve_fit). Пока у меня есть

def N2_fit(t,N2initial,C_up):
    initValues = np.array([Nconc-N2initial,N2initial,0,0,0,0])
    C = C_up
    t_span = [t[0],t[len(t)-1]]
    solution = solve_ivp(dN_dt,t_span,initValues,dense_output = True)
    z = solution.sol(t)
    N2_plot = z[1,:]
    N2_fit = np.array([t,N2_plot])
    return N2_fit

popt, pcov = sp.optimize.curve_fit(N2_fit,time,N2_data)

Я также вызываю функцию dN_dt из более раннего

def dN_dt(t,N):
    N1 = N[0]
    N2 = N[1]
    N3 = N[2]
    dN1dt = N2*W21 + N3*W31 + ((N2)**2)*C
    dN2dt = -N2*W21 + N3*W32 - 2*((N2)**2)*C
    dN3dt = ((N2)**2)*C - N3*(W32 + W31)
    dN = [dN1dt, dN2dt, dN3dt,N1,N2,N3]
    return dN

(все значения W ** являются просто константами, которые я определил ранее)

Я смотрел на эти два вопроса, но до сих пор не могу обойти эту ошибку:

scipy curve_fit error: результат вызова функции не является правильным массивом плавающие кривые и с числовой моделью в python

(также для полного раскрытия это для универа)

Заранее спасибо !

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...