У меня проблема с аппроксимацией в python.У меня есть функция, которая дает мне диктовать результаты.Например {1: 0.5, 2: 0.25}
.Это означает, что f(1)==0.5
, f(2)==0.25
и т. Д.
Ниже описано, что я делаю после получения значений из своей функции.
lists = sorted(resultsDict.items())
x, y = zip(*lists)
startvalues = [0.5,1.0,0]
popt, pcov = curve_fit(func, x, y,p0)
function=func(x,popt[0],popt[1],popt[2])
plt.plot(x,y,'x',x,function,'r-')
plt.show()
И теперь у меня есть ответ.Если я определю функцию func таким образом, все будет в порядке.
def func(x,a,b,c):
return a+b/x
Если я определю этот способ
def func(x,a,b,c):
return a+b/x+c*x
У меня будет ошибка:
TypeError: 'numpy.float64' object cannot be interpreted as an integer
И еслиЯ определяю таким образом
def func(x,a,b,c):
return a+b/x+c/(x*x) # or x**2
У меня ошибка:
TypeError: can't multiply sequence by non-int of type 'tuple'
Я не знаю, где проблема, особенно во втором, и я не знаю, как я могу увернутьсяпроблема в третьем, если я хотел проверить функцию 1/x**2
.