• 0 Posts
  • 103 Comments
Joined 1 year ago
cake
Cake day: July 6th, 2023

help-circle
















  • Here you go, you’ll need numpy, scipy and matplotlib:

    from scipy.optimize import curve_fit
    from matplotlib import pyplot as plt
    
    # 2010-2013 data from https://ourworldindata.org/renewable-energy [TWh]
    y = np.array([32, 63, 97, 132, 198, 256, 328, 445, 575, 659, 853, 1055, 1323, 1629])
    x = np.arange(0, len(y))
    
    # function we expect the data to fit
    fit_func = lambda x, a, b, c: a * np.exp2(b * x ) + c
    popt, _ = curve_fit(fit_func, x, y, maxfev=5000)
    
    fig, ax = plt.subplots()
    ax.scatter(x + 2010, y, label="Data", color="b", linestyle=":")
    ax.plot(x + 2010, fit_func(x, *popt), color="r", linewidth=3.0, linestyle="-", label='best fit curve: $y={0:.3f} * 2^{{{1:.3f}x}} + {2:.3f}$'.format(*popt))
    plt.legend()
    plt.show()
    

    Here’s what I get, global solar energy generated doubles every ~3.5 (1/0.284) years.