Вы можете использовать scipy.optimize.minimize : сначала определите вашу целевую функцию, которую я назвал f
, затем minimize
требует первоначального предположения x0
и дополнительных параметров функции, которую вы хотите для минимизации:
import numpy as np
from scipy.optimize import minimize
def f(x, A, B):
return np.linalg.norm(A-x*B, ord=2)
n = 3
A = np.ones((n,n))
B = np.arange(n**2).reshape(n,n)
minimize(f, x0=1, args=(A, B))
fun: 1.5845110835227028
hess_inv: array([[0.00838895]])
jac: array([-4.47034836e-08])
message: 'Optimization terminated successfully.'
nfev: 24
nit: 5
njev: 8
status: 0
success: True
x: array([0.1844041])
Minimize вернет своего рода отчет об оптимизации, в частности, вам нужно значение x
, которое вы можете получить как словарь minimize(f, x0=1, args=(A, B))['x']
.