Итак, у меня есть петля гистерезиса. Я хочу использовать функцию erf, чтобы она соответствовала моим данным.Fit функция erf для данных
Часть моего цикла показана черным на нижнем графике.
Я пытаюсь использовать функцию scipy.optimize.curve_fit
и scipy.special.erf
, чтобы соответствовать данным с помощью следующего кода:
import scipy.special
import scipy.optimize
def erfunc(x,a,b):
return mFL*scipy.special.erf((x-a)/(b*np.sqrt(2)))
params,extras = scipy.optimize.curve_fit(erfunc,x_data,y_data)
x_erf = list(range(-3000,3000,1))
y_erf = erfunc(x_erf,params[0],params[1])
mFL
является константой, a
управляет положение кривой ERF и b
наклон кривой , (Насколько мне известно)
Однако, если я построю полученные данные x_erf и y_erf (синим цветом). Я получаю следующее соединение, которое не является идеальным, мягко говоря:
Есть ли способ я могу получить надлежащую подгонку?
Edit: Ссылка на файл данных: https://www.dropbox.com/s/o0uoieg3jkliun7/xydata.csv?dl=0 Params [0] = 1,83289895, Params 1 = 0,27837306
Какие значения 'params'? Можете ли вы дать нам фактические значения x_data и y_data, чтобы мы могли запустить это сами? – Eric
Вы пробовали разные стартовые значения? Возможно, вы оптимизированы в каких-то локальных минимумах. – Glostas