我有一些来自研究的数据(x
和y
坐标),我必须绘制它们并找到适合数据的最佳曲线。我的曲线是:
- 多项式高达 6 次;
- 幂律;
- 指数的。
我能够找到最适合多项式的
while(i < 6):
coefs, val = poly.polyfit(x, y, i, full=True)
我采取最小化的程度val
。
当我必须拟合幂律(在我的研究中最有可能)时,我不知道如何正确地做到这一点。这就是我所做的。我已将 log 函数应用于所有函数,x
并y
尝试将其与线性多项式拟合。如果误差 (val) 低于之前尝试过的其他多项式,我选择幂律函数(如果直线的 m 为负值,自然会选择)。我对么?
现在我怎样才能从线开始重建我的幂律y = mx + q
以便用原始点绘制它?我还需要显示找到的功能。
我尝试过:
def power_law(x, m, q):
return q * (x**m)
使用
x_new = np.linspace(x[0], x[-1], num=len(x)*10)
y1 = power_law(x_new, coefs[0], coefs[1])
popt, pcov = curve_fit(power_law, x_new, y1)
但得到的曲线不适合数据。