Я пытаюсь добавить коробочную функцию в scipy.optimize, и эта функция определяется инструкцией numpy.where. Но в результате получается ковариационная матрица, заполненная записями «inf»
Функция, которую я пытаюсь подогнать, является коробчатой: она равна F0 вне «события» и F0-A внутри «события»:
np.where(np.absolute(miu-x)<=omega/2.0,F0-A,F0)
Я попытался определить его как функцию ветвления и через numpy.where. В обоих случаях конечный результат не тот, который я намереваюсь, так как он всегда выдает следующее предупреждение:
OptimizeWarning: Covariance of the parameters could not be estimated
def func(x, F0, A, miu, omega):
return np.where(np.absolute(miu-x)<=omega/2.0,F0-A,F0)
popt, pcov = curve_fit(func, xdata, ydata, p0 = pri_values, sigma = sigmas)
# xdata, ydata and p0 are obtained from other files
В качестве вывода я ожидаю массив из 4 элементов с наилучшим соответствием для каждого параметра(popt), а также ковариационная матрица 4x4 (pcov). Но мой результат не сходится к ожидаемым значениям, а ковариационная матрица заполнена "inf".