У меня есть следующий набор данных:
x = 0, 5, 10, 15, 20, 25, 30
y = 0, 0.13157895, 0.31578947, 0.40789474, 0.46052632, 0.5, 0.53947368
Теперь я хочу построить эти данные и сопоставить этот набор данных с моей определенной функцией f(x) = (A*K*x/(1+K*x))
и найти параметры A и K?
Я написал следующий python сценарий, но кажется, что он не может выполнить то, что мне нужно:
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit
x = np.array([0, 5, 10, 15, 20, 25, 30])
y = np.array([0, 0.13157895, 0.31578947, 0.40789474, 0.46052632, 0.5, 0.53947368])
def func(x, A, K):
return (A*K*x / (1+K*x))
plt.plot(x, y, 'b-', label='data')
popt, pcov = curve_fit(func, x, y)
plt.plot(x, func(x, *popt), 'r-', label='fit')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
Тем не менее, он не дает наилучшего соответствия кривой. Может ли кто-нибудь помочь мне с изменениями в сценарии python или в новом сценарии, где я могу правильно сопоставить данные с желаемой функцией подбора?