我正在尝试学习如何使用scipy.optimize。作为一个热身示例,我试图最小化 2 x 2 矩阵的行列式,其中条目的绝对值限制为 0.5。我定义了一个函数det(x),它接受四个数字,将它们放入一个方形的numpy数组中,并返回行列式。它似乎工作。然后,当我尝试最小化该函数时,出现错误“目标函数必须返回标量”。这是怎么回事?这是我的代码:n=2import numpy as npfrom scipy.optimize import minimizedef 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)
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
您是否尝试了以下方法?
sol=minimize(det,x0,method='SLSQP',bounds=bnds)
->
fun: -0.49999999712754745
jac: array([-0.5, -0.5, -0.5, 0.5])
message: 'Optimization terminated successfully.'
nfev: 42
nit: 7
njev: 7
status: 0
success: True
x: array([ 0.5, 0.5, 0.5, -0.5])
添加回答
举报
0/150
提交
取消