У меня есть следующий код:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
y = np.array([25.885,26.139,27.404,30.230])
y_err = np.array([1.851,0.979,2.049,6.729])
x = np.array([0,1,2,3])
def func(X, a, b):
x,y,weight=X
return (a * (x+0.5)/4.186 + b-y)**2/weight
popt, pcov = curve_fit(func, (x,y,y_err), 0)
print(popt)
print(pcov)
Это просто простая подгонка маршрутизации y против x, но я переписываю ее таким образом, чтобы иметь возможность пробовать разные определения потерь при подгонке , поэтому я в основном хочу минимизировать функцию, которая у меня есть, и, следовательно, результат должен быть как можно ближе к нулю. Позже я понял, что в python есть функция минимизации, но, оставив это в стороне, я получаю эту ковариационную матрицу:
[[inf inf]
[inf inf]]
, в то время как фактические параметры для a и b выглядят вполне резонно: [5.23,24.68]
Что происходит? Спасибо!