09.非线性-指数增长模型

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()

09.非线性-指数增长模型

 

上一篇:sklearn中数据缩放用到的fit_transform()、transform()、fit()方法的区别与联系


下一篇:css : object-fit 兼容 ie 的解决方案