我试图用零截距拟合二阶函数。现在,当我绘制它时,我得到一条 y-int > 0 的线。我试图拟合函数输出的一组点:
y**2 = 14.29566 * np.pi * x
或者
y = np.sqrt(14.29566 * np.pi * x)
到两个数据集 x 和 y,D = 3.57391553。我的拟合程序是:
z = np.polyfit(x,y,2) # Generate curve coefficients
p = np.poly1d(z) # Generate curve function
xp = np.linspace(0, catalog.tlimit, 10) # generate input values
plt.scatter(x,y)
plt.plot(xp, p(xp), '-')
plt.show()
我也尝试过使用statsmodels.ols
:
mod_ols = sm.OLS(y,x)
res_ols = mod_ols.fit()
但我不明白如何为二阶函数而不是线性函数生成系数,也不明白如何将 y-int 设置为 0。我看到另一个类似的帖子处理强制 y-int 为 0 与线性合适,但我不知道如何使用二阶函数来做到这一点。
立即绘制:
数据:
x = [0., 0.00325492, 0.00650985, 0.00976477, 0.01301969, 0.01627462, 0.01952954, 0.02278447,
0.02603939, 0.02929431, 0.03254924, 0.03580416, 0.03905908, 0.04231401]
y = [0., 0.38233801, 0.5407076, 0.66222886, 0.76467602, 0.85493378, 0.93653303, 1.01157129,
1.0814152, 1.14701403, 1.20905895, 1.26807172, 1.32445772, 1.3785393]