Я выполняю гауссовскую подгонку по некоторым данным (из файла prplt). Я получаю следующие ошибки: RuntimeWarning: деление на ноль, возникающие в делят возврата (y1-FUNC (х2, р))/заблуждатьсяPython: Деление на нулевую ошибку с вычислением наименьших квадратов
И
RuntimeWarning: недействительное значение встречается в double_scalars г = р [ 0] * np.exp (- (x2-p [1]) ** 2/(2 * p [2] ** 2))
Сначала я думал, при начальных параметрах p0, но теперь я убежден, что это что-то другое. Вот мой код:
x1= np.linspace(1,len(prplt),len(prplt))
index=np.where(x1>340)
x2= x1[index]
y=prplt
y1=y[index]
def func(x2,p):
z=p[0]*np.exp(-(x2-p[1])**2/(2*p[2]**2))
return z
p0=[3500.,400.,50.]
def errfunc(p,x2,y1,func,err):
return (y1-func(x2,p))/err
plt.errorbar(x2, y1, np.sqrt(y1), ecolor='black', fmt=None)
out=leastsq(errfunc, p0, args=(x2,y1,func,np.sqrt(y1)),full_output=1)
Любое понимание будет оценено! Я очень расстроен новым программистом. Спасибо, что прочитали!
в 'def func (x2, p):' добавлять инструкции печати перед математикой для распечатки x2 и p на отдельных строках. Убедитесь, что это то, что, по вашему мнению, должно быть. Например, кажется, что p должен быть массивом с не менее чем тремя элементами. – Paul