Я пытаюсь приспособить числовую модель к данным, используя 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
(также для полного раскрытия это для универа)
Заранее спасибо !