本文主要是介绍找个函数来拟合5201314,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
你们知道
y = 0.02222 x6 - 0.458333 x5 + 3.597222 x4 - 13.625 x 3 + 26.880555 x 2 - 29.416666 x + 18,
(x = 1, 2, …, 7) 其中 y 四舍五入取整数。
你们知道这个函数代表的意思吗?
# %%
import numpy as np
import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5, 6, 7]
y = [5, 2, 0, 1, 3, 1, 4]# %%
# 从2阶到11阶找一个函数来拟合5201314
for n_order in range(2, 11):p = np.poly1d(np.polyfit(x, y, n_order))plt.plot(x, y, 'ro', x, p(x), '-')plt.title('{} orders'.format(n_order), fontsize=22, backgroundcolor='y', color='w')plt.show()# 发现6阶效果可以# %%
p = np.poly1d(np.polyfit(x, y, 6))
# 输出系数
print(p.coeffs)# %%
q = np.poly1d([0.02222, -0.458333, 3.597222, -13.625, 26.880555, -29.416666, 18])
for i in range(1, 8):print(np.int(q(i) + 0.5), end='')t = list(range(1, 8))
u = np.linspace(1, 8, 200)
plt.xlim(0, 7.5)
plt.ylim(0, 6)
plt.plot(t, q(t), 'ro', u, q(u), '-')
plt.show()
第一步画出的9个图中的6orders:
最后一个画出的图:
这篇关于找个函数来拟合5201314的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!