[英]Fitting data in python using curve_fit
我试图在 python 中拟合数据以获得最佳拟合的系数。
我需要拟合的方程是:
Vs = a*(qt^b) (fs^c) (ov^d)
因此,我有 qt、fs 和 ov 的数据,需要获取 a、b、c、d 的值。
我正在使用的代码是:
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
qt = [10867.073, 8074.986, 2208.366, 3066.566, 2945.326, 4795.766, 2249.813, 2018.3]
fs = [229.6, 17.4, 5.3, 0.1, 0.1, 0.1, 0.1, 0.1]
ov = [19.159, 29.054, 37.620, 44.854, 51.721, 58.755, 65.622, 72.492]
Vs = [149.787, 125.3962, 133.927, 110.047, 149.787, 137.809, 201.506, 154.925]
d = [1.018, 1.518, 2.0179, 2.517, 3.017, 3.517, 4.018, 4.52]
def func(a, b, c, d):
return a*qt**b*fs**c*ov**d
popt, pcov = curve_fit(func, Vs, d)
print(popt[0], popt[1], popt[2])
plt.plot(Vs, d, 'ro',label="Original Data")
plt.plot(Vs, func(Vs,*popt), label="Fitted Curve")
plt.gca().invert_yaxis()
plt.show()
产生以下 output (由我切割的重要数字):
-0.333528 -0.1413381 -0.3553966
我希望在它适合的数据下面得到更多的东西,但它还没有完美地完成(注意下面的只是一个例子,并不正确)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.