Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import matplotlib.pyplot as plt
- import numpy as np
- import scipy.optimize as sco
- x = np.array([180, 300, 560, 1000, 2000, 4999, 10000, 20000])
- y = np.array([826.68, 1169.74, 1709.03, 2255.51, 2827.74, 3302.12, 3486.19, 3681.87])
- def log(bla):
- a, b, c = bla
- return a * np.log(c*x) + b - y
- def sigmoid(bla):
- d, a, c, b = bla
- return d + (a-d)/(1+(x/c)**b) - y
- res_log = sco.least_squares(log, [1., 0., 10.], method='lm').x
- res_sigmoid = sco.least_squares(sigmoid, [4000., 0., 1., 1.], method='lm').x
- plotty = np.geomspace(100, 30000)
- plt.plot(x, y, 'rx')
- plt.plot(plotty, res_log[0]*np.log(res_log[2]*plotty) + res_log[1], 'g-', label='log')
- plt.plot(plotty, res_sigmoid[0] + (res_sigmoid[1] - res_sigmoid[0]) / (1+(plotty/res_sigmoid[2])**res_sigmoid[3]), 'b--', label='sigmoid')
- plt.legend()
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement