У меня проблема с тем, как python оценивает векторные функции формы (f1 (x), f2 (x)) для массивов x при попытке подгонки кривой.Как правильно определить векторную функцию для scipy's curve_fit
import numpy as np
from scipy.optimize import curve_fit
def func(x,a,b,c):
return np.array([a*x**b+c,a*x**b+c+1])
ydata = np.array([[1,2],[3,4],[5,6],[7,8]],dtype=float)
xdata=np.array([1,2,3,4], dtype=float)
popt,pcov = curve_fit(func, xdata, ydata)
дает "ValueError: операнды не могут передаваться вместе с формами (2,4) (4,2)" Транспонирование данные, которые будут установлены:
ydata=np.array([[1,2],[3,4],[5,6],[7,8]],dtype=float).transpose()
дает «Ошибка типа: Неправильное вход: N = 3 не должен превышать M = 2 ", потому что теперь у меня меньше функциональных значений, чем у параметров. Хорошо, я знаю, почему я не могу приспособиться к этому. Поэтому мне нужно перенести значение функции:
def func(x,a,b,c):
return np.array([a*x**b+c,a*x**b+c+1]).transpose()
Это дает мне «Результат от вызова функции не является собственным массив поплавков.»
Как я могу получить решение от такой проблемы? Математически, это должно быть хорошо определено, если данные могут соответствовать модели.
[связанные вопрос] (http://stackoverflow.com/questions/41090791/how-do-i-optimize-and-find-the-coefficients- for-two-equation-both-in) – Stelios
Вы также можете быть заинтересованы в моем ответе здесь: http://stackoverflow.com/questions/40829791/fitting-a-vector-function-with-curve-fit-in-scipy/40961491 # 40961491 – tBuLi