[英]Creating determinant function for optimization in SciPy
我正在尝试学习如何使用scipy.optimize。 作为一个热身的例子,我试图将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)
您是否尝试了以下方法?
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])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.