我有[(a0,b0),(a1,b1),...,(a_n,b_n)]形式的元组列表。 y值已经根据x值计算 - 这就是元组列表的构建方式。我试图以指数方式绘制这些数据点,以获得证明限制的图像为x - >无穷。我已阅读其他用户的帖子,主要建议是使用curve_fit
中的scipy
。我面临的问题是curve_fit
有三个参数,第一个参数是创建y值的函数。
我的函数是math.log N(x)/math.log(x)
,其中N(x)
是在树的每个级别包含数据的节点数,x
是由每个级别的节点总数定义的值一棵树“正式”定义:
lim x->infinity [log N(x)/log(x)]
到目前为止,我只能用多项式绘制点;如下:
coordinates_set = [] #tuples set containing the coordinates
x = np.linspace(0, 5, 1000)
x_values = [x[0] for x in coordinates_set]
y_values = [y[0] for y in coordinates_set]
polynomial_degree = 4
coeffs = np.polyfit(x_values, y_values, polynomialDegree)
y_poly = np.polyval(coeffs, x)
plt.ylim((-100, 5000))
plt.xlim((-1,1))
plt.plot(x_values, y_values, 'o', label='data points')
plt.plot(x, y_poly, label='polynomial fit')
plt.legend()
plt.show()
我的情况下指数绘图的任何建议?或任何更好实施的建议?
修改
以下是coordinates_set
列表中的几个元组的示例:
[[0.16666666666666666, -0.0],
[0.08333333333333333, -1.6736576739067788],
[0.041666666666666664, -2.614706150234702],
[0.020833333333333332, -2.5468257447958154],
[0.010416666666666666, -1.5649172897268775],
[0.005208333333333333, -0.13183980802870454]]
此外,在lim x-> infinity log N(x)/log(x)
的表述中,N(x)
作为值提供,因为我有一个不同的函数N
,它返回值。