У меня есть следующий набор данных:
x = 2.5, 5, 7.5, 10, 20, 30
y = 18035.21768722, 18176.09871938, 18370.22289623, 18430.68522672, 18490.76110193, 18512.69861061
Теперь я хочу построить эти данные и сопоставить этот набор данных с моей определенной функцией 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([2.5, 5, 7.5, 10, 20, 30])
y = np.array([18035.21768722, 18176.09871938, 18370.22289623, 18430.68522672, 18490.76110193, 18512.69861061])
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 или новый скрипт, в котором я могу правильно подобрать данные с помощью желаемой функции подгонки?