Могу ли я использовать scipy.optimize с numpy.where? - PullRequest
1 голос
/ 01 октября 2019

Я пытаюсь добавить коробочную функцию в 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".

...