Не думаю, что вам обязательно нужно scipy.optimize.minimize
.Поскольку вы минимизируете скаляр, вы можете использовать scipy.optimize.minimize_scalar
( docs ).Это можно сделать следующим образом:
from scipy.optimize import minimize_scalar
import numpy as np
# define vecs
basic_vec = np.array([123, 342, 235, 123, 56, 345, 234, 123, 345, 54, 234]).reshape(11, 1)
factor_vec = np.array([234, 345, 453, 345, 456, 457, 23, 45, 56, 567, 5]).reshape(11, 1)
# define sums
BaseSum = np.sum(basic_vec)
FacSum = np.sum(factor_vec)
# define
f = lambda x, FacSum: np.abs(BaseSum - FacSum * x)
result = minimize_scalar(f, args = (FacSum,), bounds = (0, FacSum), method = 'bounded')
# prints
print("x = ", result.x)
print("BaseSum - FacSum * x = ", f(result.x, FacSum))
Вывод:
x = 0.741461642947231
BaseSum - FacSum * x = 0.004465840431748802
Более того, я даже не уверен, почему вам даже нужно использовать минимизацию, когда вы можете просто сделать:
x = BaseSum/FacSum