# -*- coding: utf-8 -*-
"""
@File : 200124_指数曲线拟合.py
@Time : 2020/1/24 22:26
@Author : Dontla
@Email : [email protected]
@Software: PyCharm
"""
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import numpy as np
def func(x, a, b, c):
return a * np.exp(b * x) + c
xdata = np.array([18, 19, 20, 21, 22, 23])
ydata = np.array([196, 239, 294, 444, 590, 850])
plt.plot(xdata, ydata, 'b-')
popt, pcov = curve_fit(func, xdata, ydata)
y2 = [func(i, popt[0], popt[1], popt[2]) for i in np.linspace(19, 31, 50)]
plt.plot(np.linspace(19, 31, 50), y2, 'r--')
# print(popt)
plt.show()
for date in range(24, 31):
print("{}日:{:.0f}".format(date, func(date, popt[0], popt[1], popt[2])))
结果:
D:\Yolov3_Tensorflow\python\python.exe D:/20200123_华为笔记本_pycharm测试项目/20200123_测试卷积计算/200124_指数曲线拟合.py
24日:1237
25日:1822
26日:2705
27日:4041
28日:6061
29日:9113
30日:13728
可见,如果病毒没控制住,传播将是非常迅速的
20200125
今日官方发布冠状病毒确诊人数1287例,与我们拟合曲线预测的1237例相差不大
但也有网友指出,使用Sigmoid函数拟合较为合适,我也这样认为
病毒感染初期,感染人数增长率不断增加,受制于人口总数上限或其他因素,在到达一定阶段后,感染人数增长率才开始下降
1918年西班牙大流感,当时全球共17亿人口,约10亿人感染了流感病毒,死亡约4000万人,我不知道当时为什么感染停滞了,希望此次不要重蹈覆辙,特别是在网络如此发达的今天