import numpy as np from scipy.optimize import curve_fit import matplotlib.pyplot as plt # 凸函数:斜率递增 # 指数增长模型(exponential growth model) y = aⁿ # 半衰期模型(half-life model) 剩余比例 = (1/2) ** (t / H) # 以 y = exp(x) 为例演示 x = np.arange(1, 10, 0.1) # 颗粒度越小曲线越平滑 y = np.exp(x) # plt.plot(x, y) # plt.show() """ 如何通过指数函数近似一组数据 为了找到形式为 y = a * exp(b * x)的指数函数的参数,我们使用了优化方法。 为此,scipy.optimize.curve_fit()函数适合我们。 该方法使用非线性最小二乘算法来匹配我们在输入处指定的函数。 """ x = np.arange(1, 31, 1) y = np.array([3, 7, 14, 16, 26, 47, 73, 84, 113, 196, 218, 310, 356, 475, 548, 645, 794, 942, 1096, 1251, 1319, 1462, 1668, 1892, 2203, 2511, 2777, 3102, 3372, 3764]) [a, b], res1 = curve_fit(lambda x1, a, b: a * np.exp(b * x1), x, y) y1 = a * np.exp(b * x) # plt.plot(x, y, "b") # plt.plot(x, y1, "r") # plt.show()