找个函数来拟合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 plt

x = [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_第1张图片

最后一个画出的图:
找个函数来拟合5201314_第2张图片

你可能感兴趣的:(数据分析)