fit_hill должен иметь 6 параметров.(см. https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html)
fit_hill (x, t, b, s, i, h). Вы должны попытаться дать начальное предположение для параметров.
Например, в вашей модели, когдах = 0, значение равно т. Таким образом, вы можете установить значение х = 0 в качестве оценки для т.
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
x = np.array([1, 1.90, 7.70, 30.10, 120.40, 481.60, 1925.00])
y = np.array([4118.47, 4305.79, 4337.47, 4838.11, 2660.76, 1365.05, 79.21])
def fit_hill(x,t,b,s,i,h):
return b + ((t-b)/(1 + (((x * s)/i)**-h)))
plt.plot(x,y, 'o')
popt,pcov = curve_fit(fit_hill, x, y,(4118,200,1,1900,-2))
plt.plot(x,fit_hill(x,*popt),'+')
plt.xscale('log')
plt.show()
Вы нарисовали свою модель для визуализации, подходит ли она для ваших данных?
s и i, используемые только в s / i, могут быть заменены на одну переменную в вашей модели.