为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

牧羊人nacy 2021-05-30 18:54:40
我正在尝试学习如何使用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])


查看完整回答
反对 回复 2021-06-01
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信