繁体   English   中英

创建行列式函数以在SciPy中进行优化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM