def func(x, A, B, alpha):
    return A * x ** alpha * np.exp(B * x)
A_true = 0.004
alpha_true = -0.75
B_true = -2 * 10 ** -8
xdata = np.linspace(1, 10 ** 8, 1000)
ydata = func(xdata, A_true, B_true, alpha_true)
M = np.vstack([np.ones(len(xdata)), np.log(xdata), xdata]).T
logA, alpha, B = np.linalg.lstsq(M, np.log(ydata))[0]
print('A =', np.exp(logA))
print('alpha =', alpha)
print('B =', B)
Неправильная посадка с использованием scipy curve_fit