так что я пытаюсь вписать указанную модель c в набор данных со значениями x
- y
и получить константы модели. Я могу получить константу (в этом случае есть только один), а затем установить y_opt
. Ниже приведен рабочий пример этого:
import pandas as pd
from scipy.optimize import curve_fit
data = pd.read_csv(r'')
x_measured = data['x[-]'].values
y_measured = data['y[-]'].values
def y_NH(x_eng, D):
y_comp = D * x_eng*(x_eng**2 + 3 * x_eng + 3) / (1 + x_eng)**2
return y_comp
D = curve_fit(y_NH, x_measured, y_measured)
y_opt = y_NH(x_measured, D[0])
Это хорошо работает, но не совсем хорошо для меня. Формула для y_comp
- это то, что мне нужно было вывести вручную - изначально у меня была другая переменная, скажем, Y_comp
, и я получил y_comp, дифференцируя Y_comp
(очевидно, x_eng
). Чего я хотел бы добиться, так это снабдить свою функцию Y_comp
(потому что будет больше как Z_comp
, F_comp
et c.), Это дифференцирует ее, что приведет к y_comp
(z_comp
, f_comp
), и тогда он поместил бы модель в мой набор данных - тогда результат был бы константой (-ами) конкретной модели.
Я начал с какой-то работы, но все же меня недостаточно, и я бы Спасибо за помощь в этом топи c. Код ошибки:
import sympy as sy
from sympy.utilities.lambdify import lambdify
def y_NH2(x_eng, D):
lambda1 = sy.Symbol('lambda1')
x_eng = sy.Symbol('x_eng')
#Gi = sy.Symbol('Gi')
lambda1 = x_eng + 1
W = lambda1**2 + 2 / lambda1
y_comp_symb = sy.diff(W, x_eng)
y_comp = lambdify(x_eng, y_comp_symb,'numpy')
y_return = D / 2 * y_comp(x_eng)
return y_return
y_p = y_NH2(x_measured, 12)
print(y_p)
D = curve_fit(y_NH2, x_measured, y_measured)
y_opt = y_NH2(x_measured, D[0])
Это вызывает ошибку в curve_fit, а именно: «error: Результат от вызова функции не является правильным массивом с плавающей точкой».
Не могли бы вы дать мне подсказку?