Как и в комментарии к этому квесту , я заранее проверил форму:
tfit, Ufit, sigmaa shape: (10,) (10,) (10,)
и получил ошибку формы, если я добавляю аргумент sigmaa в функцию scipy.optimze curve_fit (без нее все нормально, но, конечно, ошибки подгонки малы).
popt,pcov = curve_fit(sin, tfit, Ufit, p0=(aest, omegaest, best), sigma=sigmaa, absolute_sigma=True)
В сигме Do c:
: последовательность None, длина M или массив MxM
Таким образом, если ydata является 1D-массивом длины n, сигма должен быть одинаковой формы. Любые предложения, что я мог проверить, или почему я получил ошибку формы? Я также преобразовал тип всех предметов в плавающее, но это не помогло
Редактировать
модель:
def sin(t,a,omega, b):
return a* abs(np.sin(omega*t)) + b
данные:
tfit= np.array([0.36, 0.72, 1, 1.3, 1.6, 2.1, 2.4, 2.75, 2.75, 3])*10**(-6)
Ufit=np.array([0.17175157, 0.39198839, 0.54454849, 0.65495591, 0.69163653, 0.60340953, 0.46283192, 0.25174074, 0.24903292, 0.10684749])
sigmaa= np.array([0.00061646, 0.00114748, 0.00149843, 0.00164597, 0.00168677, 0.00156178,0.001281, 0.0010296, 0.00075319, 0.00054636])
aest= 0.6916365322714262
best= 0
omegaest=0.7853981633974483