Функция подгонки шага с изменением местоположения шага с помощью scipy оптимизировать Curve_fitPython

Программы на Python
Гость
Функция подгонки шага с изменением местоположения шага с помощью scipy оптимизировать Curve_fit

Сообщение Гость »


Я пытаюсь подогнать данные x y, которые выглядят примерно так

x = np.linspace(-2, 2, 1000) а = 0,5 yl = np.ones_like(x[x = a]) * 0,4 + np.random.normal(0, 0,05, x[x >= a].shape[0]) y = np.concatenate((yl, yr)) plt.scatter(x, y, s=2, color='k')
Изображение


Я использую вариант ступенчатой ​​функции Хевисайда

def f(x, a, b): вернуть 0,5 * b * (np.sign(x - a)) и соответствие

popt, pcov = Curve_fit(f, x, y, p0=p) где p — некоторая начальная догадка. для любого pcurve_fit подходит только b, а не a например:

popt, pcov = Curve_fit(f, x, y, p0=[-1.0, 0]) мы получаем, что popt равен [-1., 0.20117665]

popt, pcov = Curve_fit(f, x, y, p0=[.5, 2]) мы получаем, что popt равен [.5, 0.79902]

popt, pcov = Curve_fit(f, x, y, p0=[1.5, -2]) мы получаем, что popt равен [1,5, 0,40128229]

почему кривая_fit не соответствует a?

Вернуться в «Python»