我正在尝试学习如何使用scipy.optimize。作为一个热身示例,我试图最小化 2 x 2 矩阵的行列式,其中条目的绝对值限制为 0.5。我定义了一个函数det(x),它接受四个数字,将它们放入一个方形的numpy数组中,并返回行列式。它似乎工作。然后,当我尝试最小化该函数时,出现错误“目标函数必须返回标量”。这是怎么回事?
这是我的代码:
n=2
import numpy as np
from scipy.optimize import minimize
def det(x):
A=np.zeros((n,n))
for i in range(n):
for j in range(n):
A[i,j]=x[2*i+j]
return np.linalg.det(A)
x0=[.01,-.01,.02,-.1]
b=(-0.5,0.5)
bnds=[b,b,b,b]
sol=minimize(det(x),x0,method='SLSQP',bounds=bnds)
print(sol)
HUX布斯
相关分类