让我们最小化函数
f =lambda x: (x+1)**2
在 scipy 中使用鲍威尔方法
如果我们使用
scipy.optimize.minimize(f, 1, method='Powell', bounds=None)
回报是
direc: array([[1.]])
fun: array(0.)
message: 'Optimization terminated successfully.'
nfev: 20
nit: 2
status: 0
success: True
x: array(-1.)
即最小值应为-1。如果我们提供界限
scipy.optimize.minimize(f, 1, method='Powell', bounds=[(0,2)])
返回又是
direc: array([[1.]])
fun: array(0.)
message: 'Optimization terminated successfully.'
nfev: 20
nit: 2
status: 0
success: True
x: array(-1.)
现在这是错误的!正确答案应该是 0。这就像不考虑边界一样。我正在使用 scipy '1.4.1' 和 python 3.7.6。有人有任何线索吗?
红糖糍粑
有只小跳蛙